- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试获取在 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/
好吧,我绞尽脑汁想弄明白 QWebEngine。 我理解实现虚拟功能的概念,但我不确定如何让用户点击的 url 成为页面或 View 请求的 newTab/newWindow 链接。 QWebEngi
当我使用以下代码浏览到一个页面时,结果是另一种语言(我认为是俄语)。当我在其他浏览器中浏览到相同的 url 时,我会按预期获得英文 404 页面。我尝试设置接受语言,但这没有帮助。我错过了什么? im
我在 PyQt5 和 Python 3.6 中使用 QWebEngineView 小部件。我想在加载页面时显示进度。出于演示目的,我只是使用打印语句来执行此操作(稍后我想让进度条小部件出现、显示进度并
我正在尝试使用 QWebEngineView 创建一个窗口,并在窗口关闭后删除 QWebEngineView。但是,QWebEngineView 似乎永远不会被删除,并且会继续运行我加载的任何 QUr
我有以下代码片段在 PySide 中工作,需要将其转换为在 PySide2 中工作。目的是在单击时强制所有链接在系统浏览器中打开(而不是小部件尝试加载它们): from PySide.QtWebKit
我正在将我的代码从 QtWebKit 转移到 QtWebEngine。总的来说,过渡相当顺利,但是,我被困在一个特定问题上。我使用 QWebEngineView 来显示 Google map 页面。一
如何在QWebEngineView中改变用户代理?我知道 QWebView 有一种方法可以做到这一点,但我没有找到 QWebEngineView 的解决方案。 最佳答案 在构建 QWebEngineP
如何检测 QWebEngineView 小部件中的鼠标点击? 我试过这个但不起作用: class MyWin(QtWidgets.QMainWindow): def __init__(self
我想编写一个程序来自动测试不同屏幕尺寸的网页尺寸。我使用 QWebEngineView 创建窗口,我需要模拟用户鼠标在网页中单击并拖放元素。我试过 qApp->sendEvent 和 qApp->po
我想开发一个桌面应用程序,该应用程序涉及每秒从串行端口接收地理坐标并实时添加到 map 中。该 map 应类似于以下链接: 我编写了一段代码来测试 Folium 执行此任务的能力。 import sy
我正在构建一个 pyqt5 桌面界面,我在其中使用 QWebEngineView 来显示一个 html 文件,其中我显示了 Leaflet map 。这工作正常。下一步是导出用户添加到 map 的所有
我有这部分工作,但我面临几个困难: 1) 看来 QWebEnginePage 需要一个 QWebEngineView。 (请参阅此处的 setView() 方法: https://code.woboq
我正在尝试在 Qt 中创建一个加载 URL 的对话框(我不想向最终用户公开,因此是一个对话框)。一旦用户在页面上输入了他们的凭据,服务器就会返回一个我想要捕获的重定向 URL。我怎样才能做到这一点?
有没有功能 QWebView 和 QWebEngineView 的区别?如果我理解正确,QWebView 是 webkit,而 QWebEngineView 是闪烁的。程序员有什么区别吗?一个比另一个
我来自 tkinter 背景,所有东西都可以放在框架中。 我怎样才能让我当前的工作代码结果(它启动一个页面的 WebEngine View ,在这个例子中是谷歌)位于主窗口中,如图所示?例如,我希望将
我来自 tkinter 背景,所有东西都可以放在框架中。 我怎样才能让我当前的工作代码结果(它启动一个页面的 WebEngine View ,在这个例子中是谷歌)位于主窗口中,如图所示?例如,我希望将
我最终想要完成的是捕获用户在网站中输入的用户名和密码。例如,如果用户在 Facebook 登录中输入“test@example.com”作为电子邮件地址,然后单击“提交”,我想将该电子邮件地址存储在我
我有一个简单的网页,我想提取文本 My First Heading。 //This is a single line comment /* This is a block comment */
也许这是一个错误。有一个顶级小部件必须有阴影。在那个小部件中,我想显示一个浏览器(只能呈现 html)。顶级小部件的不透明度必须是可调的。为了使投影效果如预期(不显示黑色边框),我们需要将 Qt::W
编辑:这不是重复的。链接的问题处理 CORS 安全问题,浏览器不允许您从不同来源加载脚本。我的问题与基本资源加载方案有关(file:/// vs qrc:/)。 我正在尝试使用 file:/// 方案
我是一名优秀的程序员,十分优秀!