欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python 爬取网页中JavaScript动态添加的内容(一)

程序员文章站 2022-03-20 20:09:39
当我们进行网页爬虫时,我们会利用一定的规则从返回的 HTML 数据中提取出有效的信息。但是如果网页中含有 JavaScript 代码,我们必须经过渲染处理才能获得原始数据。此时,如果我们仍采用常规方法从中抓取数据,那么我们将一无所获。那么,通过Web kit可以简单解决这个问题。Web kit 可以 ......

当我们进行网页爬虫时,我们会利用一定的规则从返回的 html 数据中提取出有效的信息。但是如果网页中含有 javascript 代码,我们必须经过渲染处理才能获得原始数据。此时,如果我们仍采用常规方法从中抓取数据,那么我们将一无所获。那么,通过web kit可以简单解决这个问题。web kit 可以实现浏览器所能处理的任何事情。对于某些浏览器来说,web kit就是其底层的网页渲染工具。web kit是qt库的一部分,因此如果你已经安装qtpyqt4库,那么你可以直接运行之。

1、环境准备

linux:sudo apt-get install python-qt4

windows:https://www.cnblogs.com/jimc/p/9717238.html

2、使用

首先通过 web kit 发送请求信息,然后等待网页被完全加载后将其赋值到某个变量中。接下来我们利用lxml从 html 数据中提取出有效的信息。这个过程需要一点时间。

import sys
from pyqt4.qtwebkit import *
from pyqt4.qtgui import *
from pyqt4.qtcore import *
class render(qwebpage): # 用来渲染网页,将url中的所有信息加载下来并存到一个新的框架中 def __init__(self,url): self.app = qapplication(sys.argv) qwebpage.__init__(self) self.loadfinished.connect(self._loadfinished) self.mainframe().load(qurl(url)) self.app.exec_() def _loadfinished(self, result): self.frame = self.mainframe() self.app.quit() url = 'http://jandan.net/ooxx' r = render(url) html = r.frame.tohtml() print(html)

 那么,后面的工作就是解析html代码了,这里不做讲解。