use*_*201 5 python pyqt pyside
我的印象是使用PyQT使用webkit的无头浏览器实现会自动获取每个URL的html代码,即使其中包含大量的JS代码.但我只是部分地看到它.我正在与我从firefox窗口保存页面时获得的页面进行比较.
我使用以下代码 -
class JabbaWebkit(QWebPage):
# 'html' is a class variable
def __init__(self, url, wait, app, parent=None):
super(JabbaWebkit, self).__init__(parent)
JabbaWebkit.html = ''
if wait:
QTimer.singleShot(wait * SEC, app.quit)
else:
self.loadFinished.connect(app.quit)
self.mainFrame().load(QUrl(url))
def save(self):
JabbaWebkit.html = self.mainFrame().toHtml()
def userAgentForUrl(self, url):
return USER_AGENT
def get_page(url, wait=None):
# here is the trick how to call it several times
app = QApplication.instance() # checks if QApplication already exists
if not app: # create QApplication if it doesnt exist
app = QApplication(sys.argv)
#
form = JabbaWebkit(url, wait, app)
app.aboutToQuit.connect(form.save)
app.exec_()
return JabbaWebkit.html
Run Code Online (Sandbox Code Playgroud)
有人可以看到代码明显错误吗?
通过几个URL运行代码之后,我发现这里显示的问题非常明显 - http://www.chilis.com/EN/Pages/menu.aspx
谢谢你的任何指示.
小智 1
该页面有ajax代码,当加载完成后,仍然需要一些时间来使用ajax更新页面。但是您的代码将在完成加载后退出。
您应该添加一些像这样的代码来等待一段时间并处理 webkit 中的事件:
for i in range(200): #wait 2 seconds
app.processEvents()
time.sleep(0.01)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |