2016-04-29 6 views
0

PyQt Pythonでデスクトップアプリケーションをビルドしていて、Webブラウザをロードしているので、リクエストで読み込んだURLを表示するためにhttp fox(Firefoxプラグイン)の機能を追加したい渡されたURLとhttp foxと同じように各URLに関連付けられた他のヘッダーがあります。QWebviewブラウザにヘッダを表示するPyqt Python

ロードされたURLを表示してから、各URLのクリックで他のヘッダーを表示する方法を見つけられないというコードを記述しました。私はQwebviewでCookie Jarについて聞いたことがありますが、ロードされた各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]) 

私は

[![here on the upper part we have loaded URLs and below that we can see the header, i have written the code for loaded URLs but how to show the headers][1]][1] 

答えて

1

をsomethinglike-たいあなたが探しているものを、このですか?

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() 
+0

おかげで助けを求め、また、私は、要求と一緒に行くユーザーエージェントを取得する方法を、私が試した「印刷reply.rawHeader(」ユーザーエージェント「)」ということを知っているが、空の文字列を返すようにしたいです。 –

+0

あなたは私を助けてください、私はまた、このhttp://stackoverflow.com/questions/36995190/how-to-get-user-agent-and-cookies-going-with-a-request-inの質問を提起していますあなたが投稿したコードに-qwebview-pyqt-python –

+0

を置くと、Requestメソッド( "GET"または "POST")が表示され、他のヘッダがあればパラメータを投稿できますか? –

関連する問題