【问题标题】:Element Not Found Exception: HTMLUnit - Search By ID未找到元素异常:HTMLUnit - 按 ID 搜索
【发布时间】:2019-03-22 14:07:25
【问题描述】:

我正在尝试使用 HTMLUnit(第一次)从特定页面中提取数据。 具体来说,我目前正在尝试按 ID(搜索框)获取 HTML 元素。

但我遇到了:

Exception in thread "main" com.gargoylesoftware.htmlunit.ElementNotFoundException: elementName=[*] attributeName=[id] attributeValue=[space_search_keyword]
    at com.gargoylesoftware.htmlunit.html.HtmlPage.getHtmlElementById(HtmlPage.java:1547)
    at com.gargoylesoftware.htmlunit.html.HtmlPage.getHtmlElementById(HtmlPage.java:1517)
    at Test.main(Test.java:33)

这是我的代码:

import java.util.List;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HTMLParserListener;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class Test {

    public static void main(String[] args) {

        HtmlPage page = null;

        WebClient client = new WebClient();
        client.setCssEnabled(false); 
        client.setJavaScriptEnabled(false);

        try {  
          String searchUrl = "https://25live.collegenet.com/umassd/#space_search[0]";
          page = client.getPage(searchUrl);
        }catch(Exception e){
          e.printStackTrace();
        }


        //System.out.println(page.asXml());
        HtmlElement searchBox = (HtmlElement)page.getHtmlElementById("space_search_keyword");

    }

}

使用 page.asXML() 进一步检查后,页面似乎没有正确加载,这就是它找不到项目的原因?我不确定为什么它没有为 HTMLUnit 加载。无需登录,在浏览器中输入即可看到该页面。

对于调试此类 HTMLUnit 问题的任何帮助将不胜感激。

【问题讨论】:

    标签: java xml web-scraping htmlunit


    【解决方案1】:

    该站点是一个用 Angular 编写的 SPA(单页应用程序)。 你需要 JavaScript 来运行它。

    不幸的是,HtmlUnit 的 JavaScript 功能不足以运行 Angular,所以你的方法行不通。

    你可以试试:

    • 对页面进行逆向工程并获取 SPA 正在访问的底层资源
    • 试试 Selenium ChromeDriver(它实际上会打开 Chrome 并模拟页面上的按钮点击)

    【讨论】:

    • 对于我在这个例子中的目的,使用 Selenium ChromeDriver 来遍历页面是最好的选择,并且仍然允许我抓取我需要的信息。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-02-16
    • 1970-01-01
    • 2014-05-24
    • 2013-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    相关资源
    最近更新 更多