java - JSoup 不加载整个 HTML

标签 java web-scraping web-crawler jsoup

我想抓取一个网站,但是当我使用 Jsoup.connect(url) 连接到它时仅加载页面的一部分。

当我将页面下载为 html 时,我看到页面的一部分只有一个加载器图标,因此我得出结论,页面的该部分是后来从其他来源加载的。

有趣的是,检查元素包含缺少的 html,而查看页面源代码则不包含。从 jSoup 加载的 HTML 与从“查看页面源代码”打开时基本相同。

有没有办法绕过这个并加载浏览器中显示的整个页面?

有问题的页面是这样的:https://www.oddsportal.com/tennis/australia/atp-australian-open-2017/results/page/1/

询问我可以提供的任何其他信息。

==============

编辑: 我正在连接到这样的网址:

Document doc = null;

try {
    doc =  Jsoup.connect(url).get();
} catch (IOException e) {
    e.printStackTrace();
}

我使用 css 选择器获取这个 div:

Elements tournamentTable = doc.select("div[id=tournamentTable]");

tournamentTable的内容是 <div id="tournamentTable"></div>

最佳答案

看来id=tournamentTable是使用javascript动态生成的。 JSoup 不评估 javascript,因此您必须使用像 HtmlUnit 这样的库。例如:

WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setJavaScriptEnabled(true); // enable javascript
webClient.getOptions().setThrowExceptionOnScriptError(false); //even if there is error in js continue
webClient.waitForBackgroundJavaScript(5000); // important! wait until javascript finishes rendering
HtmlPage page = webClient.getPage(url);

page.getElementById("tournamentTable");

关于java - JSoup 不加载整个 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54101049/

相关文章:

json - 用 Cheerio 抓取,文字不可见

python - Scrapy Spider 不遵循使用yield 的请求回调

java - Eclipse : "The project cannot be built until build path errors are resolved" 错误

Java - 从预先设计的形状中选择随机形状

Java - 以编程方式检查文件名中的无效字符

html - 从表格中抓取 Excel VBA Web

html - 在VBA中使用XMLHTTP对象解析一些网站

java - JavaFX UI 组件的 Nimbus 式外观

php - BOT/蜘蛛陷阱的想法

php 将所有链接转换为绝对 url