gpt4 book ai didi

python - 使用 PyQT 使用 headless webkit 实现时,HTML 页面大不相同

转载 作者:太空狗 更新时间:2023-10-30 01:34:28 25 4
gpt4 key购买 nike

我的印象是,使用 PyQT 使用 webkit 的 headless 浏览器实现会自动为我获取每个 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

有人能看出代码有什么明显的错误吗?

通过几个 URL 运行代码后,我发现这里有一个非常清楚地显示了我遇到的问题 - http://www.chilis.com/EN/Pages/menu.aspx

感谢您的指点。

最佳答案

页面有ajax代码,加载完成后,还需要一些时间用ajax更新页面。但是您的代码将在加载完成后退出。

你应该添加一些这样的代码来等待一些时间并处理 webkit 中的事件:

for i in range(200): #wait 2 seconds
app.processEvents()
time.sleep(0.01)

关于python - 使用 PyQT 使用 headless webkit 实现时,HTML 页面大不相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19214939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com