【发布时间】:2014-08-23 15:02:51
【问题描述】:
我正在使用以下样板 PyQt4 代码,目的是捕获页面上由 javascript 生成的所有 HTML:
import sys
from PyQt4.QtGui import *
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
class Render(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 getHtml(str_url):
r_html = Render(str_url)
html = r_html.frame.toHtml()
return html
然后我创建了一个测试页面来看看它是否有效:
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#test').text('This is a test!')
});
</script>
</head>
<body>
<div id="test"></div>
</body>
</html>
这么跑
getHtml('http://www.mytestpage.com')
我希望看到带有“这是一个测试!”的 HTML在 div 中呈现的文本。然而,HTML 正在返回,而该片段不存在。
我做错了什么?代码没有等待页面完全加载吗?还是我误解了用例?
【问题讨论】:
标签: python web-scraping pyqt4