java爬虫抓取动态网页(如何利用Webkit从JS渲染网页中实现浏览器非常有趣)

优采云 发布时间: 2021-09-19 09:11

  java爬虫抓取动态网页(如何利用Webkit从JS渲染网页中实现浏览器非常有趣)

  当我们进行网络爬虫时,我们将使用某些规则从返回的HTML数据中提取有效信息。但是,如果web页面收录java代码,则必须经过渲染处理才能获得原创数据。在这一点上,如果我们仍然使用传统的方法从中获取数据,我们将一无所获。浏览器知道如何处理和显示这些代码,但是我们的程序应该如何处理这些代码呢?接下来,我将介绍一种简单而粗糙的方法来获取收录java代码的网页信息

  大多数人使用lxml和漂亮的soup包来提取数据。在本文中我不会介绍任何爬虫框架,因为我只使用最基本的lxml包来处理数据。也许你会想知道为什么我更喜欢lxml。这是因为lxml使用元素遍历方法来处理数据,而不是像Beauty soup那样使用正则表达式来提取数据。在本文中,我将介绍一个非常有趣的案例——我突然发现我的文章出现在最近的pycoders周刊147期上,所以我想抓取pycoders周刊中所有文件的链接

  

  显然,这是一个带有Java呈现的网页。我想捕获网页中的所有文件信息和相应的链接信息。那我该怎么办?首先,我们无法使用HTTP方法获取任何信息

  导入请求

  从lxml导入html

  #存储响应

  响应=请求。获取(“”)

  #从响应体创建lxml树

  tree=html.fromstring(response.text)

  #查找响应中的所有锚定标记

  print tree.xpath('//div[@class=“campaign”]/a/@href')

  当我们运行上述代码时,我们无法获得任何信息。这怎么可能?网页清楚地显示了如此多的文件信息。其次,我们需要考虑如何解决这个问题。

  如何获取内容信息

  接下来,我将介绍如何使用web工具包从JS呈现的web页面获取数据。什么是网络工具包?Web kit可以实现浏览器可以处理的任何功能。对于某些浏览器,WebKit是底层网页呈现工具。Web工具包是Qt库的一部分,所以如果您已经安装了Qt和PyQt4库,则可以直接运行它们

  您可以使用命令行安装软件库:

  sudo apt get安装python-qt4

  现在所有的准备工作已经完成,我们将使用一种新的方法来提取信息

  解决方案

  我们首先通过web工具包发送请求信息,然后在web页面完全加载后将其分配给变量。接下来,我们使用lxml从HTML数据中提取有效信息。这个过程需要一点时间,但是你会惊讶地发现整个网页都被完全加载了

  导入系统

  从PyQt4.QtGui导入*

  从PyQt4.Qtcore导入*

  从PyQt4.QtWebKit导入*

  类呈现(QWeb页面):

  定义初始化(self,url):

  self.app=QApplication(sys.argv)

  QWebPage._____;初始化(自)

  self.loadFinished.connect(self.\u loadFinished)

  self.mainFrame().load(QUrl(url))

  self.app.exec()

  def_uu加载完成(自身、结果):

  self.frame=self.mainFrame()

  self.app.quit()

  类render可用于呈现网页。当我们创建一个新的呈现类时,它可以加载URL中的所有信息,并在一个新的框架中共存

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线