由于PyQt5的资料太少,加上能力有限,耗时一天时间做了个客户端,存有Bug,以及只有登录和获取cookies的功能,现在做个学习记录吧,后期有时间再来完善。
第三方库安装好后,复制粘贴即可运行。
import sys
import requests
from PyQt5.Qt import *
from PyQt5.QtWebEngineWidgets import QWebEngineView,QWebEngineProfile
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
class MainWindows(QWidget):
def __init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.setWindowTitle("测试")
self.setWindowIcon(QIcon("n6.ico"))
self.resize(800,800)#主窗口大小
self.setFixedSize(800, 800) #主窗口大小不能随意放缩
self.setup_ui()
def setup_ui(self):
self.Brows()
self.Cookie_btn()
self.textLine()
self.loadJS()
self.showTX()
def showTX(self):
self.lab= QLabel(self)
self.lab.setText("")
self.lab.resize(100, 100)
self.lab.move(50, 50)
# self.lab.setPixmap(QPixmap('./Info.png'))
def textLine(self):
self.pte = QPlainTextEdit(self)
# self.pte.setPlainText("111")
self.pte.resize(300, 300)
self.pte.move(300, 250)
def loadJS(self):
self.ld=QPushButton(self)
self.ld.setText("点击获取基本信息")
self.ld.move(150,0)
# self.btn_get.clicked.connect(self.run_js)
self.ld.clicked.connect(self.downUserInfo)
def Cookie_btn(self):
self.btn_get = QPushButton(self) # 创建一个按钮点击获取cookie
self.btn_get.setText("获取cookie")
self.btn_get.move(50,0)
self.btn_get.clicked.connect(self.get_cookies) # 绑定按钮点击事件
def Brows(self):
self.web = MyWebEngineView(self) # 创建浏览器组件对象,并且主窗口为父控件
self.web.resize(260, 360) # 设置浏览器大小
self.web.move(20,30)
url = 'https://qzone.qq.com/'
self.web.load(QUrl(url))
self.web.show() # 最后让页面显示出来
#####web页面加载完毕,调用函数
self.web.page().loadFinished.connect(self.run_js)
#运行js脚本,有回调
def run_js(self):
js_string = '''
function myFunction()
{
var img_url= document.getElementById('QM_OwnerInfo_Icon').src;
return img_url;
}
myFunction();
'''
self.web.page().runJavaScript(js_string, self.js_callback)
# 回调函数
def js_callback(self, result):
# print(result)
self.rs_succ=result
print(self.rs_succ)
# QMessageBox.information(self, "提示", str(result))
def downUserInfo(self):
url=self.rs_succ
headers = {
'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36'
}
if url == 'None':
print("为None")
else:
print("这是下载函数,url是---", url)
response = requests.get(url,headers=headers)
with open("Info.png", "wb") as fp:
fp.write(response.content)
fp.close()
print("个人头像已保存!")
self.web.deleteLater()#销毁子控件
self.lab.setPixmap(QPixmap('./Info.png'))
def get_cookies(self):
cookie = self.web.get_cookie() #获取浏览器得到的cookies
print('获取到cookie: ', cookie)
self.pte.setPlainText(str(cookie))
# self.web.deleteLater()#删除浏览器子控件
# 创建自己的浏览器控件,继承自QWebEngineView
class MyWebEngineView(QWebEngineView):
def __init__(self, *args, **kwargs):
super(MyWebEngineView, self).__init__(*args, **kwargs)
# 绑定cookie被添加的信号槽
QWebEngineProfile.defaultProfile().cookieStore().cookieAdded.connect(self.onCookieAdd)
self.cookies = {} # 存放cookie字典
def onCookieAdd(self, cookie): # 处理cookie添加的事件
name = cookie.name().data().decode('utf-8') # 先获取cookie的名字,再把编码处理一下
value = cookie.value().data().decode('utf-8') # 先获取cookie值,再把编码处理一下
self.cookies[name] = value # 将cookie保存到字典里
# 获取cookie
def get_cookie(self):
cookie_str = self.cookies # 字典的形式返回
return cookie_str
if __name__ == '__main__':
app = QApplication(sys.argv)
win_root=MainWindows()
win_root.show()
sys.exit(app.exec_())
最后,小编想说:我是一名python开发工程师,
整理了一套最新的python系统学习教程,
想要这些资料的可以关注私信小编“01”即可(免费分享哦)希望能对你有所帮助
正在学习python的小伙伴或者打算学习的,可以私信小编“01”领取资料!
本文来自经验投稿,不代表美啦巴巴立场,如若转载,请注明出处:https://www.meila8.com/2/471.html