gpt4 book ai didi

python - 如何获取在 QWebEngineView 中加载的页面的 html

转载 作者:太空宇宙 更新时间:2023-11-04 11:12:46 25 4
gpt4 key购买 nike

我正在尝试获取在 PyQT5 QWebEngineView 中加载的页面的 HTML。这是一个简单的例子:

import sys
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import *


def callback_function(html):
print(html)


def on_load_finished():

web.page().runJavaScript("document.getElementsByTagName('html')[0]", callback_function)


app = QApplication(sys.argv)
web = QWebEngineView()
web.load(QUrl("https://stackoverflow.com"))
web.show()
web.loadFinished.connect(on_load_finished)

sys.exit(app.exec_())

我希望能够从 runJavaScript() 调用返回 html,但我在回调函数中得到了一个空白。

我的代码中有什么不正确的地方,还有哪些替代方法可用于获取页面的 HTML?

最佳答案

使用我的 old answer编写 C++ 并将解决方案转换为 Python:

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication


def callback_function(html):
print(html)


def on_load_finished():
web.page().runJavaScript("document.documentElement.outerHTML", callback_function)


app = QApplication(sys.argv)
web = QWebEngineView()
web.load(QUrl("https://stackoverflow.com"))
web.show()
web.resize(640, 480)
web.loadFinished.connect(on_load_finished)

sys.exit(app.exec_())

更新:

您的问题是 getElementsByTagName() 返回一个 js 元素列表,并且该元素无法导出到 python,您应该做的是获取 innerHTML:

import sys
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication


def callback_function(html):
print(html)


def on_load_finished():
web.page().runJavaScript(
"document.getElementsByTagName('html')[0].innerHTML", callback_function
)
# or document.getElementsByTagName('html')[0].outerHTML


app = QApplication(sys.argv)
web = QWebEngineView()
web.load(QUrl("https://stackoverflow.com"))
web.show()
web.resize(640, 480)
web.loadFinished.connect(on_load_finished)

sys.exit(app.exec_())

关于python - 如何获取在 QWebEngineView 中加载的页面的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57813303/

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