安装 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