问题标签 [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.

0 投票
1 回答
1581 浏览

python - Pyqt 将 dom 保存到文件

为什么这段代码不起作用?我想在这个页面上执行 js 后保存 dom,我想在没有 gui 的情况下使用 qt。对不起我的英语不好。

0 投票
1 回答
3361 浏览

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作为QNetworkReplyIODevice类。

这个代理怎么写?

0 投票
3 回答
7071 浏览

qt - 如何告诉 QWebPage 不加载特定类型的资源?

如何告诉QWebPage不加载特定类型的资源,如 js、css 或 png?

0 投票
2 回答
342 浏览

qt4 - 如何查看与 QWebPage 关联的 HTML 数据

我编写了一个使用 QWebPage 检索网站的程序。有没有办法获取与网页相关的数据,如 HTML、CSS 和 Javascript?类似于 Firefox 中的查看源代码。

似乎有几个选择。一种方法是制作 QNetworkReply 代理并尝试复制数据,但这似乎容易出现错误。另一种方法是与缓存交互,但这似乎不可预测。还有其他可能的方法吗?

0 投票
1 回答
2186 浏览

python - PyQt:如何将 QWebPage 与匿名代理一起使用

这真让我抓狂。

我想在 QWebPage 中显示一个 url,但我想通过匿名代理传递它。

代码

我调用了一个测试页面,它告诉我标题(在 php 服务器上,所以我查看 $_SERVER),并且 remote_addr 始终是我的 ip,而不是代理 ip。

怎么了?

你能帮助我吗?我正在使用 PyQt 4.8.3。

0 投票
1 回答
1040 浏览

c++ - QWebPage,获取 mime 类型

我想知道如何使用 QWebPage 获取当前页面的 mime 类型。此外,如果可能的话,我希望能够使用 HEAD 请求来执行此操作,因此如果它不是正确的 mime 类型,我知道不要下载整个页面。有任何想法吗?

0 投票
1 回答
964 浏览

qt - 如何在 Qt 中管理 QWebView 内容?

我有一个加载网页的 QWebView 对象。我需要将页面中的图片保存到内存中。图片的 URL 是动态的,但它遵循正则表达式。

我如何使用 QWebView 做到这一点?

0 投票
1 回答
1487 浏览

qt - QWebPage 强制在同一选项卡中打开链接

我正在使用 Qt 中的单选项卡浏览器,但遇到了一个问题:

指向外部网站的网络链接设置为在新选项卡中打开(使用 taget='_blank')。但是,由于我的浏览器只有一个选项卡,因此这些链接根本处于非活动状态。

我相信可以通过注入 JavaScript (QWebFrame::eveluateJavaScript) 来强制链接在同一个选项卡中打开,这似乎是一个低效的解决方案。

Qt 中是否有一种本地方式可以强制所有链接在同一个选项卡/窗口中打开?

编辑:

我通过重新实现 loadFinished(bool) 提出了一种原生方式:

如果有更好的方法我会很高兴看到它。

0 投票
1 回答
874 浏览

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 有什么特别的吗?

0 投票
2 回答
872 浏览

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: