使用Python进行屏幕抓取

发布于 2021-01-29 15:15:39

Python是否具有提供JavaScript支持的屏幕抓取库?

我一直在将 pycurl 用于简单的HTML请求,并将Java的 HtmlUnit 用于需要JavaScript支持的更复杂的请求。

理想情况下,我希望能够使用Python进行所有操作,但是我没有遇到任何允许我执行此操作的库。它们存在吗?

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在处理静态HTML时,有很多选项,其他响应也涵盖了这些选项。但是,如果需要JavaScript支持并希望保留在Python中,建议您使用webkit渲染网页(包括JavaScript),然后检查生成的HTML。例如:

    import sys
    import signal
    from PyQt4.QtCore import *
    from PyQt4.QtGui import *
    from PyQt4.QtWebKit import QWebPage
    
    class Render(QWebPage):
        def __init__(self, url):
            self.app = QApplication(sys.argv)
            QWebPage.__init__(self)
            self.html = None
            signal.signal(signal.SIGINT, signal.SIG_DFL)
            self.connect(self, SIGNAL('loadFinished(bool)'), self._finished_loading)
            self.mainFrame().load(QUrl(url))
            self.app.exec_()
    
        def _finished_loading(self, result):
            self.html = self.mainFrame().toHtml()
            self.app.quit()
    
    
    if __name__ == '__main__':
        try:
            url = sys.argv[1]
        except IndexError:
            print 'Usage: %s url' % sys.argv[0]
        else:
            javascript_html = Render(url).html
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看