问题标签 [qwebpage]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Pyqt 将 dom 保存到文件
为什么这段代码不起作用?我想在这个页面上执行 js 后保存 dom,我想在没有 gui 的情况下使用 qt。对不起我的英语不好。
qt - 如何从 QWebPage 使用的 QNetworkReply 读取数据?
我QWebPage
用来下载网页及其所有资源。同时,我想掌握 Qt 在此过程中下载的原始数据。QNetworkReply
通过从in信号中读取数据来做到这void QNetworkAccessManager::finished(QNetworkReply * reply)
一点并不是一个好的解决方案,因为数据本身可能已经被读取QWebPage
。这是因为
QNetworkReply 是一个顺序访问的 QIODevice,这意味着一旦从对象中读取数据,它就不再由设备保存。
根据详细QNetworkReply
描述。
但是QWebPage
可以配置为使用QNetworkAccessManager
带有覆盖createRequest
方法的自定义
我认为正确的解决方案是创建一个代理并在方法QNetworkReply
中返回它。createRequest
该代理应该允许从回复中读取数据,就像原始的情况一样QNetworkReply
(以便QWebPage
可以从中读取数据),但同时该代理应该允许在其他对象读取数据后读取数据QWebPage
。换句话说,我们需要tee作为QNetworkReply
基IODevice
类。
这个代理怎么写?
qt - 如何告诉 QWebPage 不加载特定类型的资源?
如何告诉QWebPage
不加载特定类型的资源,如 js、css 或 png?
qt4 - 如何查看与 QWebPage 关联的 HTML 数据
我编写了一个使用 QWebPage 检索网站的程序。有没有办法获取与网页相关的数据,如 HTML、CSS 和 Javascript?类似于 Firefox 中的查看源代码。
似乎有几个选择。一种方法是制作 QNetworkReply 代理并尝试复制数据,但这似乎容易出现错误。另一种方法是与缓存交互,但这似乎不可预测。还有其他可能的方法吗?
python - PyQt:如何将 QWebPage 与匿名代理一起使用
这真让我抓狂。
我想在 QWebPage 中显示一个 url,但我想通过匿名代理传递它。
代码
我调用了一个测试页面,它告诉我标题(在 php 服务器上,所以我查看 $_SERVER),并且 remote_addr 始终是我的 ip,而不是代理 ip。
怎么了?
你能帮助我吗?我正在使用 PyQt 4.8.3。
c++ - QWebPage,获取 mime 类型
我想知道如何使用 QWebPage 获取当前页面的 mime 类型。此外,如果可能的话,我希望能够使用 HEAD 请求来执行此操作,因此如果它不是正确的 mime 类型,我知道不要下载整个页面。有任何想法吗?
qt - 如何在 Qt 中管理 QWebView 内容?
我有一个加载网页的 QWebView 对象。我需要将页面中的图片保存到内存中。图片的 URL 是动态的,但它遵循正则表达式。
我如何使用 QWebView 做到这一点?
qt - QWebPage 强制在同一选项卡中打开链接
我正在使用 Qt 中的单选项卡浏览器,但遇到了一个问题:
指向外部网站的网络链接设置为在新选项卡中打开(使用 taget='_blank')。但是,由于我的浏览器只有一个选项卡,因此这些链接根本处于非活动状态。
我相信可以通过注入 JavaScript (QWebFrame::eveluateJavaScript) 来强制链接在同一个选项卡中打开,这似乎是一个低效的解决方案。
Qt 中是否有一种本地方式可以强制所有链接在同一个选项卡/窗口中打开?
编辑:
我通过重新实现 loadFinished(bool) 提出了一种原生方式:
如果有更好的方法我会很高兴看到它。
python - 使用 PySide 覆盖 QWebPage 中的 shouldInterruptJavaScript
我想覆盖 PySide.QtWebKit.QWebPage.shouldInterruptJavaScript() 插槽以静默忽略 JavaScript 中断请求。我有自己的超时计时器设置,不需要默认消息对话框。
引用 PySide文档:
由于二进制兼容性限制,此功能不是虚拟的。如果您想在 PySide.QtWebKit.QWebPage 子类中提供自己的实现,请改为在子类中重新实现 QWebPage.shouldInterruptJavaScript() 槽。QtWebKit 将动态检测插槽并调用它。
这是我编写的示例代码,但我的 shouldInterruptJavaScript() 方法从未被调用。我看到 PhantomJS 和 webscraping 开源项目中使用的代码相同。
我有 Python 2.7.1、PySide 1.0.2、Qt 4.7.2。现在我正在构建最新的 PySide,以便对其进行测试,但在最近的发行说明或错误报告中我找不到任何关于 shouldInterruptJavaScript 的信息。
我应该如何在我的子类中重新实现 shouldInterruptJavaScript 有什么特别的吗?
python - Getting erratic "Invalid Signal signature" errors in PySide QWebPage
I am creating an application which automates loading webpages and creating screenshots (no, I cannot use one of the existing solutions) using PySide. One part of the app gets a list of URLs and loads each URL in turn using a new QWebPage object. After the page is loaded a screenshot is taken and the QWebPage object is deleted.
Every now and then, given enough runs, I get the following error from PySide, as a RuntimeError exception:
The first line is printed to STDERR (probably by Qt?) and the second line is the Python exception.
loadStarted() is a built-in QWebPage signal, not something I created. This works 90% of the time, and I could not figure out what makes it fail occasionally.
To be honest, this app is quite unusual in design, as it hooks PySide/Qt into a uWSGI served web app - this means that for example I am not using the QApplication event loop but rather a local event loop for each page load. I am also not experienced in either Qt or Python so it's possible I'm making a lot of mistakes, but I can't figure out what those are.
I am thinking this post might have something to do with it, but I'm not sure.
Any suggestions on where to look next?
UPDATE: the signal is connected through the following code:
MyWebPage objects are created as children of a different single QObject instance which is not deleted until the process shuts down. They are deleted by calling page.deleteLater() once I am done with them. Since I am running a local event loop, I trigger deferred deletions to happen after exiting local event loop by calling: