嗨,我想从一个网站上删除信息,所以我试着用Jsoup(也试过HttpClient)来做。我意识到它们都不能"看到" html页面的某些内容。所以当我试着打印解析后的html时,我得到了这样的空div。它打印出了一些其他的div就很好了。
下面是我代码:
Class Main{
public static void main(String args[]) throws IOException, InterruptedException {
Document doc = Jsoup.connect(url).get();
System.out.println(doc.getElementsByClass("needed content"));
}
}
终端中的结果是:
<div class="needed content"></div>
我正在stackoverflow上搜索答案,一些建议使用Jackson Library Java-我如何使用JSoup访问Div的子程序
一些人建议在JavaIs there a way to embed a browser in Java?中嵌入浏览器
有些人建议使用htmlunitFail to get full content of page with JSoup
我刚刚尝试结合Jsoup与html单元,同样的结果这里的代码:
try(WebClient wc = new WebClient()){
wc.getOptions().setJavaScriptEnabled(true);
wc.getOptions().setCssEnabled(false);
wc.getOptions().setThrowExceptionOnScriptError(false);
wc.getOptions().setTimeout(10000);
HtmlPage page = wc.getPage("https://chainlinklabs.com/jobs");
String pageXml = page.asXml();
Document doc2 = Jsoup.parse(pageXml, url);
System.out.println(doc2.getElementsByClass("needed content"));
System.out.println("Thank God!");
}
我对这个问题的解释是Jsoup没有显示部分html内容,因为它包含javascript;我走的方向对吗?
1条答案
按热度按时间gblwokeq1#
没有必要(这是一种资源浪费)将页面从HtmlUnit重新解析到jsoup中,所有的选择选项在HtmlUnit中也可用(参见https://htmlunit.sourceforge.io/gettingStarted.html)--也许更多。
这段简单的代码对我很有效--页面的一部分是由一个异步启动的js脚本生成的,因此在访问页面之前你必须等待这些脚本。