使用Python进行屏幕抓取
Python是否具有提供JavaScript支持的屏幕抓取库?
我一直在将 pycurl 用于简单的HTML请求,并将Java的 HtmlUnit 用于需要JavaScript支持的更复杂的请求。
理想情况下,我希望能够使用Python进行所有操作,但是我没有遇到任何允许我执行此操作的库。它们存在吗?
-
在处理静态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