python 3.4 PyQt4 QtWebKit 实现浏览器 开发者工具 network 获得页面 网络请求 参数

安装 python34  ,pyqt4  下方链接 

python有版本要求 python3.4.0

pyqt4 安装注意系统位数 32 or 64

pyqt4.exe安装路径是python的安装路径 (如:d:/python34)

安装介绍文档   

https://blog.csdn.net/qq_27136227/article/details/78884409

python  and  pyqt4 安装包 

https://download.csdn.net/download/qq_37082495/10639601  

引用代码地址

http://python.jobbole.com/82715/ 

import sys
 
# from PyQt4.QtGui import QApplication
# from PyQt4.QtCore import QUrl
# from PyQt4.QtWebKit import QWebView
# from PyQt4.QtGui import QGridLayout, QLineEdit, QWidget,QTableWidget
from PyQt4.QtNetwork import * 
from PyQt4.QtGui import *    
from PyQt4.QtCore import *    
from PyQt4.QtWebKit import * 

class UrlInput(QLineEdit):
    def __init__(self, browser):
        print("-------UrlInput __init__----------")
        super(UrlInput, self).__init__()
        self.browser = browser
        # add event listener on "enter" pressed
        self.returnPressed.connect(self._return_pressed)
 
    def _return_pressed(self):
        print("-------UrlInput _return_pressed----------")
        url = QUrl(self.text())
        # load url into browser frame
        browser.load(url)

class RequestsTable(QTableWidget):
    header = ["url", "status", "content-type"]
 
    def __init__(self):
        print("-----------RequestsTable  __init__------------")
        super(RequestsTable, self).__init__()
        self.setColumnCount(3)
        self.setHorizontalHeaderLabels(self.header)
        header = self.horizontalHeader()
        header.setStretchLastSection(True)
        header.setResizeMode(QHeaderView.ResizeToContents)
 
    def update(self, data):
        print("-----------RequestsTable  update------------")
        last_row = self.rowCount()
        next_row = last_row + 1
        self.setRowCount(next_row)
        for col, dat in enumerate(data, 0):
            if not dat:
                continue
            self.setItem(last_row, col, QTableWidgetItem(dat))

class Manager(QNetworkAccessManager):
    def __init__(self, table):
        print("-------_finished--__init__-------")
        QNetworkAccessManager.__init__(self)
        # add event listener on "load finished" event
        self.finished.connect(self._finished)
        self.table = table
 
    def _finished(self, reply):
        #print("-------_finished---------")
        """Update table with headers, status code and url.
        """
        headers = reply.rawHeaderPairs()
        headers = {str(k):str(v) for k,v in headers}
        content_type = headers.get("Content-Type")
        url = reply.url().toString()
        # getting status is bit of a pain
        status = reply.attribute(QNetworkRequest.HttpStatusCodeAttribute)
        print("-----------------------------")
       # status, ok = status#.toInt()
        #print(status,ok)
        print([url, str(status), content_type])
        #self.table.update([url, str(status), content_type])

class JavaScriptEvaluator(QLineEdit):
    def __init__(self, page):
        print("----------JavaScriptEvaluator init------------")
        super(JavaScriptEvaluator, self).__init__()
        self.page = page
        self.returnPressed.connect(self._return_pressed)
 
    def _return_pressed(self):
        print("--------JavaScriptEvaluator  _return_pressed-------------")
        frame = self.page.currentFrame()
        result = frame.evaluateJavaScript(self.text())


if __name__ == "__main__":
    app = QApplication(sys.argv)
 
    grid = QGridLayout()
    browser = QWebView()
    url_input = UrlInput(browser)
    requests_table = RequestsTable()
 
    manager = Manager(requests_table)
    # to tell browser to use network access manager
    # you need to create instance of QWebPage
    page = QWebPage()
    page.setNetworkAccessManager(manager)
   
   
    browser.setPage(page)
 
    js_eval = JavaScriptEvaluator(page)
 

    grid.addWidget(url_input, 1, 0)
    grid.addWidget(browser, 2, 0)
    grid.addWidget(requests_table, 3, 0)
    grid.addWidget(js_eval, 4, 0)
    text=browser.page().currentFrame().documentElement().toInnerXml()
    print(text)
    main_frame = QWidget()
    main_frame.setLayout(grid)
    main_frame.show()
 
    sys.exit(app.exec_())
#data = self.webView.page().currentFrame().documentElement().toInnerXml()
 

同类参考 https://blog.csdn.net/mingzznet/article/details/51325323

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值