首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从网页中抓取数据。爪哇,HTMLUnit

从网页中抓取数据。爪哇,HTMLUnit
EN

Stack Overflow用户
提问于 2016-05-29 18:23:19
回答 2查看 1.5K关注 0票数 1

我正试着从网页上搜集一些信息。我的问题是我得到的回报不包含我想要的东西。

如果我检查web的源代码,就会发现一个空部分。

代码语言:javascript
复制
<section id="player-controller">
</section>

但是,如果我检查我想要数据的元素,它们就会出现在该部分中。

由于它是动态生成的,所以我尝试使用HTMLUnit,但仍然无法得到它。也许我看错了。

有什么方法可以用HTMLUnit获取代码,还是应该使用不同的工具?

解决了

通过使用HTMLUnit并在打印页面之前让进程停止一段时间,我得到了打印缺少的内容

代码语言:javascript
复制
WebClient webclient = new WebClient();
    HtmlPage currentPage = webclient.getPage("https://www.dubtrack.fm/join/chilloutroom");
    Thread.sleep(2000);
    System.out.println(currentPage.asXml());
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-29 19:50:57

如果您在第一次加载页面时检查它的文本,则动态内容还不会被加载。callScraper.html中的javascript将调用另一个页面,然后在读取HTML元素的内容之前等待两秒钟。在这里,时机可能很棘手。我希望下面的代码会有所帮助。

callScraper.html

代码语言:javascript
复制
<!DOCTYPE html>
<head>
<title>Call test for scraping</title
<meta charset="UTF-8" />
<script>
var newWindow;
var contents;
function timed() {
contents.value = contents.value + "\r\n" +"function timed started" + "\r\n";
contents.value = contents.value + "\r\n" + newWindow.document.getElementById("player-controller").innerHTML;
}
function starter() {
// alert("Running starter");
contents = document.getElementById("contents");
newWindow = window.open("scraper.html");
contents.value = contents.value + "\r\nTimer started\r\n";
setTimeout(timed, 2000);
}
window.onload=starter;
</script>
</head>
<body>
<p>This will open another page and then diplay an element from that page.</p>
<form name="reveal">
<textarea id="contents" cols="50" rows="50"></textarea>
</form>
</body>
</html>

scraper.html

代码语言:javascript
复制
<!DOCTYPE html>
<head>
<title>Test for scraping</title>
<meta charset="UTF-8" />
<script>
var section;
function starter() {
section = document.getElementById("player-controller");
// alert(":"+section.innerHTML+";");
section.innerHTML = "<p>inner text</p>";
// alert(":" +section.innerHTML + ":");
}
window.onload = starter;
</script>
</head>
<body>
<p>See http://stackoverflow.com/questions/37513393/scrapping-data-from-webpage-java-htmlunit</p>
<section id="player-controller">

</section>
</body>
</html>
票数 0
EN

Stack Overflow用户

发布于 2016-05-29 18:29:34

您可以尝试使用汤汁

检查我想要的数据元素,它们会出现在动态生成的部分中。

API允许使用最好的DOM、CSS和jquery类方法来提取和操作数据。在AJAX加载数据之前,您可能需要执行一些操作。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37513393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档