使用jsoup通过Web抓取模态窗口(对话框)

时间:2015-07-15 10:39:43

标签: javascript java html jsoup

我正在研究我必须从网站中提取数据的项目。该项目是在java中,网站是在java脚本中。我正在使用Jsoup从网站中提取数据但是网页中有一些模态窗口(对话框,弹出窗口)。所以是否有可能使用jsoup提取模态窗口的数据?????  所以,如果答案是肯定的,那么我怎么能这样做?请提供链接,如果没有,那么最好的方法是什么?

感谢您的帮助。我真的很感激。

1 个答案:

答案 0 :(得分:1)

我假设模态是由Javascript生成的。 Jsoup只是一个解析器。这意味着它将发出HTTP请求(GET或POST,无论你告诉它做什么),服务器(网站)将使用初始html进行响应。通过说初始,我的意思是执行任何javascript之前的之前的

Javascript可以生成html(就像有问题的模态一样),但这对Jsoup是不可见的,因为解析器只能读取,不能执行代码。浏览器能够生成模态,因为它包含一个解析执行Javascript的Javascript执行引擎。

当您访问网页时,您不知道什么是动态的(由Javascript生成)以及什么是静态的(由服务器提取)。 检查动态和静态(Jsoup可见静态)的一个小技巧是执行以下操作:

  1. 访问您要解析的网页(如果可能的话,使用chrome,我认为mozilla也会工作)。
  2. 按Ctrl + U.这将打开一个新标签。
  3. 新标签将包含一些html,css和js网格。这是服务器提取到浏览器的内容,也是Jsoup可见的。 如果模态在那里,那么很好,它对Jsoup是可见的。如果没有,那么你必须使用一个充当无头浏览器的库。

    无头浏览器本质上是一个没有图形界面的浏览器。它可以解析和执行Javascript。它"看到"普通浏览器看到了什么。

    最常用的库是selenium webdriver。小心,selenium是一个有很多部分的测试框架。你需要的是webdriver。 有很多例子都有现成的代码来帮助你入门。