在QWebview浏览器Pyqt Python中显示标题

2024-04-25 02:21:24 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我正在用PyQt python构建一个桌面应用程序,并在其中加载了一个web浏览器,现在我想添加httpfox(Firefox插件)的功能,以查看已加载的URL以及与每个URL相关联的其他头文件,这些邮件头与httpfox中的相同。在

我已经编写了代码,从显示加载的网址,但没有找到一种方式,以显示其他标题点击每个网址。我听说过Qwebview中的cookiejar,但不知道如何显示每个加载的URL。在

我的代码是:-

class Manager(QNetworkAccessManager):
def __init__(self, table):
    QNetworkAccessManager.__init__(self)
    self.finished.connect(self._finished)
    self.table = table

def _finished(self, reply):
    headers = reply.rawHeaderPairs()
    headers = {str(k):str(v) for k,v in headers}
    content_type = headers.get("Content-Type")
    url = reply.url().toString()
    status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
    status, ok = status.toInt()
    self.table.update([url, str(status), content_type])

我想要一些像-

^{pr2}$

Tags: 代码selfurlinitdefstatustablereply
1条回答
网友
1楼 · 发布于 2024-04-25 02:21:24

这就是你要找的吗?在

import logging
import sys
from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest
from PyQt4.QtCore import QUrl, QEventLoop

log = logging.getLogger(__name__)


class Manager(QNetworkAccessManager):
    def __init__(self, table=list()):
        QNetworkAccessManager.__init__(self)
        self.finished.connect(self._finished)
        self.table = table

    def _finished(self, reply):
        headers = reply.rawHeaderPairs()
        headers = {str(k): str(v) for k, v in headers}
        content_type = headers.get("Content-Type")
        url = reply.url().toString()
        status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
        status, ok = status.toInt()
        self.table.append([str(url), str(status), content_type])
        log.info(self.table)
        request = reply.request()
        log.info(request.rawHeader("User-Agent"))
        method = reply.operation()
        if method == QNetworkAccessManager.GetOperation:
            log.info("get")
            request.url().queryItems()
        if method == QNetworkAccessManager.PostOperation:
            log.info("post")

def test():
    manager = Manager()
    log.info("Sending request")
    manager.get(QNetworkRequest(QUrl("http://www.google.com/")))

    # just for testing purpose to wait for the request to finish
    l = QEventLoop()
    manager.finished.connect(l.quit)
    l.exec_()

if __name__ == '__main__':
    logging.basicConfig(level=logging.DEBUG)

    app = QApplication(sys.argv)
    test()

相关问题 更多 >