在我的项目中,有些人需要在加载网页时通过Python在Chrome开发工具中获取某个请求的网址,
我认为通过Qt WebEngine获取URL是一个很好的解决方案。我开始尝试使用下面的代码在加载网页时打印出所有请求的网址,但它没有工作 - 根本没有网页打印,所以这里有什么问题?有什么好的解决方案吗?
import sys
import os
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWebEngineCore import *
from PyQt5.QtCore import QUrl
class WebEngineUrlRequestInterceptor(QWebEngineUrlRequestInterceptor):
def __init__(self, parent=None):
super().__init__(parent)
def interceptRequest(self, info):
print(info.requestUrl())
if __name__ == '__main__':
app = QApplication(sys.argv)
profile = QWebEngineProfile()
profile.setRequestInterceptor(WebEngineUrlRequestInterceptor())
page = QWebEnginePage(profile)
page.setUrl(QUrl(
"http://music.163.com/"))
view = QWebEngineView()
view.setPage(page)
view.resize(1024, 600)
view.show()
sys.exit(app.exec_())
答案 0 :(得分:0)
我在Q ++中使用Qt,但在Python中应该是类似的,
如果您正在尝试处理HTTP / HTTPS网址,则可以继承QWebEnginePage并重新实现
const QString EXAMPLE_SCHEMA_HANDLER = "example://" /* http://, https://, mail:// .... */;
const QWebEngineUrlSchemeHandler* installed = QWebEngineProfile::defaultProfile()->urlSchemeHandler(EXAMPLE_SCHEMA_HANDLER);
if (!installed)
profile()->installUrlSchemeHandler(EXAMPLE_SCHEMA_HANDLER, new WebAppUrlSchemeHandler(this));
要使用您自己的QWebEngineUrlRequestInterceptor,您必须指定您正在使用的协议。 C ++中的示例:
profile.setRequestInterceptor("https://", WebEngineUrlRequestInterceptor())
Dorry我不使用Python,但让我们在Python中尝试这样的东西:
RewriteRule ^sports/cricket/ipl?$ /ipl [NC]
RewriteRule ^sports/cricket?$ /cricket [NC]
RewriteRule ^sports/football/ileague?$ /football [NC]
RewriteRule ^sports/football?$ /football [NC]