Web抓取模式窗口(对话框)使用jsoup

Web scraping of modal window(dialogue box) using jsoup

本文关键字:使用 jsoup 对话框 抓取 模式 窗口 Web      更新时间:2023-09-26

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

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

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

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

当你访问一个网页时,你不知道什么是动态的(由Javascript生成),什么是静态的(由服务器获取)。有一个小技巧可以检查哪些是动态的,哪些是静态的(静态对Jsoup是可见的),方法如下:

  1. 访问你想要解析的网页(如果可能的话,使用chrome浏览器,我认为mozilla也可以工作)。
  2. 按Ctrl + u,这将打开一个新的选项卡。

新标签将包含一些html, css和js的网格。这是服务器获取到浏览器的内容,Jsoup也可以看到它。如果模态在那里,那么很好,Jsoup可以看到它。如果没有,那么你必须使用一个库来充当无头浏览器。

无头浏览器本质上是没有图形界面的浏览器。它可以解析和执行Javascript。它能"看到"普通浏览器看到的东西。

最常用的库是selenium webdriver。注意,selenium是一个包含很多部分的测试框架。你需要的是webdriver。有很多现成代码的示例可以帮助您入门。