找不到元素异常:HTMLUnit - 按 ID 搜索
Element Not Found Exception: HTMLUnit - Search By ID
我正在尝试使用 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 加载。无需登录,您可以在浏览器中输入自己看到的页面。
任何有关调试的帮助HTML将不胜感激。
该站点是用 Angular 编写的 SPA(单页应用程序)。
你需要 JavaScript 到 运行 它。
不幸的是,HtmlUnit 的 JavaScript 能力不足以 运行 Angular,所以你的方法行不通。
你可以试试:
- 对页面进行逆向工程并获取 SPA 正在访问的底层资源
- 试试 Selenium ChromeDriver(它实际打开 Chrome 并模拟页面上的按钮点击)
我正在尝试使用 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 加载。无需登录,您可以在浏览器中输入自己看到的页面。
任何有关调试的帮助HTML将不胜感激。
该站点是用 Angular 编写的 SPA(单页应用程序)。 你需要 JavaScript 到 运行 它。
不幸的是,HtmlUnit 的 JavaScript 能力不足以 运行 Angular,所以你的方法行不通。
你可以试试:
- 对页面进行逆向工程并获取 SPA 正在访问的底层资源
- 试试 Selenium ChromeDriver(它实际打开 Chrome 并模拟页面上的按钮点击)