我正在尝试从使用javascript加载其大部分内容的网站中抓取数据。现在我使用jSoup来解析html页面,但是由于大部分内容是使用javascript加载的,我无法解析我想要的数据。
我应该如何获取此javascript内容?我应该先保存页面,然后使用jSoup加载并解析它吗?如果是这样,在保存之前我应该使用什么来加载javascript内容?是否有建议可以输出html的API?
目前正在使用java。
答案 0 :(得分:1)
您可能有兴趣查看pjscrape(免责声明:这是我的项目)。它是一个命令行工具,使用PhantomJS允许在完整的浏览器上下文中使用JavaScript和jQuery进行抓取 - 除此之外,您可以为页面定义“就绪”函数并等待刮到函数(可能检查是否存在某些DOM元素,等等)返回true。
另一个选项,取决于页面,是使用像Firebug这样的控制台来确定正在加载的数据(即页面上的AJAX调用正在检索哪些URL),并直接从这些数据中删除数据网址。
答案 1 :(得分:0)
如果使用javascript生成数据,则数据位于下载页面中。 更好的是直接解析它们,就像使用纯HTML或文本解析一样。 如果你不能用jSoup API隔离令牌,只需使用直接字符串选项解析它们,就像纯文本一样。
答案 2 :(得分:0)
我尝试使用htmlUnit,但我觉得它很慢。
我最终在java中使用curl命令行函数,这对我的目的起作用。
String command = "curl "+url;
Process p = Runtime.getRuntime().exec(command);
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((s = stdInput.readLine()) != null) {
html = html+s+"\n";
}
return html;