gpt4 book ai didi

java - htmlunit java - 如何解析 javascript 的内容结果?和 htmlunit 错误

转载 作者:太空宇宙 更新时间:2023-11-04 09:39:01 25 4
gpt4 key购买 nike

这是我要抓取的页面:https://www.tokopedia.com/berkahcell2/promo-termurah-vr-virtual-reality-box-v-2-0-remote-bluetooth-gamepad/review?src=topads

我想抓取“ulasan terbaru”下的注释文本,我认为它是 javascript 的结果(不过我可能是错的,我不完全确定如何通过检查元素检查它),除此之外我也不确定 HTMLUnit 中的几件事

我已经读到要抓取我需要使用 HTMLUnit 而不是 Jsoup 的 javascript 内容。我已阅读http://htmlunit.10904.n7.nabble.com/Selecting-a-div-by-class-name-td25787.html尝试按类抓取 div 的评论,但我得到了零输出。

    public static void comment(String url) throws IOException{

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

try {
HtmlPage page = client.getPage(url);
List<?> date = page.getByXPath("//div/@class='list-box-comment'");
System.out.println(date.size());
for(int i =0 ; i<date.size();i++){
System.out.println(date.get(i).asText());
}
}
catch(Exception e){
e.printStackTrace();
}

}

这是我的代码中用于处理评论抓取的部分,我这样做对吗?但我有两个问题:

  1. 在“asText()”处,它说“无法解析方法asText()”
  2. 即使我在没有“asText()”的情况下运行,我也会收到此错误:
com.gargoylesoftware.htmlunit.ObjectInstantiationException: unable to create HTML parser
at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.<init>(HTMLParser.java:418)
at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.<init>(HTMLParser.java:342)
at com.gargoylesoftware.htmlunit.html.HTMLParser.parse(HTMLParser.java:203)
at com.gargoylesoftware.htmlunit.html.HTMLParser.parseHtml(HTMLParser.java:179)
at com.gargoylesoftware.htmlunit.DefaultPageCreator.createHtmlPage(DefaultPageCreator.java:221)
at com.gargoylesoftware.htmlunit.DefaultPageCreator.createPage(DefaultPageCreator.java:106)
at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseInto(WebClient.java:433)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:311)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:373)
at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:358)
at ReviewScraping.comment(ReviewScraping.java:86)
at ReviewScraping.main(ReviewScraping.java:108)
Caused by: org.xml.sax.SAXNotRecognizedException: Feature 'http://cyberneko.org/html/features/scanner/allow-selfclosing-iframe' is not recognized.
at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)
at com.gargoylesoftware.htmlunit.html.HTMLParser$HtmlUnitDOMBuilder.<init>(HTMLParser.java:411)
... 11 more

我希望我能显示所有评论

/edit 当我制作此内容时,我使用 Intellij 作为我的 IDE,并且 HTMLUnit 的依赖项通过使用 Maven 位于我的 Intellij 项目结构中

最佳答案

关于您的代码:

public static void main(String[] args) throws IOException {
final String url = "https://www.tokopedia.com/berkahcell2/promo-termurah-vr-virtual-reality-box-v-2-0-remote-bluetooth-gamepad/review?src=topads";

try (final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_60)) {
webClient.getOptions().setThrowExceptionOnScriptError(false);

HtmlPage page = webClient.getPage(url);
webClient.waitForBackgroundJavaScript(40_000);

System.out.println(page.asXml());

List<DomNode> date = page.getByXPath("//div[@class='list-box-comment']");
System.out.println(date.size());

for(int i = 0 ; i < date.size();i++){
System.out.println(date.get(i).asText());
}
}
}

现在是页面本身的问题:

已经做了一些测试,看起来页面在真实浏览器中也会产生错误(检查浏览器控制台)。但使用 HtmlUnit 会遇到更多问题(可能是因为缺少某些 javascript 功能的支持)。通常这种页面会使用很多很多行 js 代码 - 对我来说找出问题所在真的很耗时。如果您想解决此问题,请尝试查找问题的真正原因(请参阅 http://htmlunit.sourceforge.net/submittingJSBugs.html 以获取一些提示)并提交错误报告。

关于java - htmlunit java - 如何解析 javascript 的内容结果?和 htmlunit 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56178775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com