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
关于python - 使用 Python 进行屏幕抓取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2190502/