如何使用QWebkit抓取动态数据

随着电商的发展,有些时候公司要求我们技术人员抓取一些动态数据,比如天猫京东等大型电商企业上的一些内容。由于这些企业的数据保护做的比较完善,使用python的urllib2模块是无法得到我们想要的结果的。
既然,如何那么我们该怎么办才好呢?在Qt中,给我们提供了QWebkit组件,这个组件可以模拟浏览器执行Javascript,并将最终网页的数据给提取出来。
这里,我们使用PyQt5作为例子:

import sys    
from PyQt5.QtWidgets import *    
from PyQt5.QtCore import *    
from PyQt5.QtWebKitWidgets import *     

class WebRender(QWebPage):    
    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()    

def main(url):    
    from lxml import etree    
    html = WebRender(url)    
    page = etree.HTML(html.encode("utf-8"))    
    #剩下的解析工作

这里,我们通过生成1个Web页面,然后请求给定的URL地址。然后通过lxml模块的etree对文本内容进行解析操作,最终得到我们想要的结果。
这个例子只供做学习使用,不要在实际的需求中使用。

参考文章:

http://pyqt.sourceforge.net/Docs/PyQt5/introduction.html#module-PyQt5.QtWebKitWidgets
http://lxml.de/tutorial.html">http://lxml.de/tutorial.html">http://lxml.de/tutorial.html

若文章对您有帮助,请打赏1块钱。您的支持,可以让我分享更多精彩的文章。转载请注明来源


知识共享许可协议
本作品采用知识共享署名-非商业性使用-相同方式共享 2.5 中国大陆许可协议进行许可。