使用pyqt5的QWebEngineView视图组件可以打开网址(或加载本地html网页)。加载网页后,可以通过运行javascript代码获取网页源代码,也可以通过toHtml函数获取网页源代码。下面展示如何通过toHtml函数获取源码。首先创建一个垂直布局,一个QWebEngineView组件和一个QPushButton组件,并将这两个组件添加到垂直布局中,并将layout垂直布局设置为self窗口。其次,通过load方法加载百度地图,然后在button按钮上添加一个clicked槽函数add_script。最后在slot函数中实现了打印源码的功能。主要用到了self.web_browser.page().toHtml这个函数,因为这个函数需要一个函数作为参数,同时会把网页的源代码传出去,所以给一个匿名函数lambda传递,并打印出参数x,这是toHtml传过来的源码。这样就实现了获取网页源代码的功能。toHtml有点类似于信号。实现过程中可以做一些优化和调整,比如在self.web_browser.loadFinished信号上绑定一个自定义的slot函数,在网页加载完成后获取网页的源代码。slot函数可以任意处理,比如通过实例变量接收,或者保存为本地网页,或者进一步解析网页源代码获取指定的元素或文本内容。另外,QWebEngineView还有执行javascriptrunJavaScript函数的功能,可以当selenium来自动运行。导入sysfromPyQt5.Qt导入*classMainWindow(QWidget):def__init__(self):super(MainWindow,self).__init__()self.setupUI()defsetupUI(self):layout=QVBoxLayout()self.web_browser=QWebEngineView()#self.web_browser.load(QUrl('https://pan.baidu.com/s/17XlMuMzfQhwJ5R1Bn7yuiA#list/path=%2F'))btn=QPushButton('加载脚本')layout.addWidget(btn)layout.addWidget(self.web_browser)self.setLayout(layout)self.web_browser.load(QUrl('https://map.baidu.com'))btn.clicked.connect(self.add_script)#self.web_browser.loadFinished.connect(self.add_script)defadd_script(self):print('按键已被点击')#self.web_browser.page().toPlainText(lambdax:print(x))self.web_browser.page().toHtml(lambdax:print(x))#self.web_browser.page().runJavaScript('''functiongetname(){#varelem=document.getElementById("user-center");#elem.remove();#varelem2=document.getElementById("消息中心");#elem2.remove();#varelem3=document.querySelector('.BMap_cpyCtrl');#elem3.remove();#varelem4=document.querySelector('.BMap_scaleCtrl');#elem4.remove();#varelem5=document.querySelector('#newuilogo');#elem5.remove();};#获取名称();#''')if__name__=='__main__':app=QApplication(sys.argv)window=MainWindow()window.show()sys.exit(app.exec_())
