Это одна страница, которую я собираюсь почистить: https://www.tokopedia.com/berkahcell2/promo-termurah-vr-virtual-reality-box-v-2-0-remote-bluetooth-gamepad/review?src=topads
Я хочу просмотреть текст комментария в разделе "ulasan terbaru", который, как я теоретизирую, является результатом javascript (хотя я могу ошибаться, но я не совсем уверен, как проверить его с помощью элемента inspect), кроме этого Я также не уверен в некоторых вещах в HTMLUnit
Я прочитал, что для удаления содержимого javascript мне нужно использовать HTMLUnit, а не Jsoup. Я прочитал 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();
}
}
Это часть моего кода, которая будет обрабатывать комментарии, правильно ли я делаю? Но у меня есть две проблемы:
- в asText () он сказал, что «не может разрешить метод asText ()»
- Даже если я запускаю без «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 ReviewScrapping.comment(ReviewScrapping.java:86)
at ReviewScrapping.main(ReviewScrapping.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 находятся в моей структуре проекта Intellij с использованием Maven