PyQt5的资料太少,功能也有限,所以我花了一天时间才创建了一个客户端。它有一个bug,只能登录和检索cookie。现在就创建一个学习记录,并在以后有时间时进行改进。
安装第三方库后,复制并粘贴并运行它。
导入系统
导入请求
从PyQt5.Qt 导入*
从PyQt5.QtWebEngineWidgets QWebEngineView、QWebEngineProfile 导入
从PyQt5.QtWidgets 导入QApplication、QWidget、QPushButton
类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.lab=QLabel(自我)
self.lab.setText(\’\’)
self.lab.resize(100, 100)
self.lab.move(50, 50)
# self.lab.setPixmap(QPixmap(\’./Info.png\’))
def textLine(自身):
self.pte=QPlainTextEdit(self)
# self.pte.setPlainText(\’111\’)
self.pte.resize(300, 300)
self.pte.move(300, 250)
defloadJS(自身):
self.ld=QPushButton(自身)
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.btn_get=QPushButton(self) #创建一个按钮,点击获取cookie
self.btn_get.setText(\’获取cookie\’)
self.btn_get.move(50,0)
self.btn_get.clicked.connect(self.get_cookies) # 绑定按钮点击事件
聋人浏览(自):
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() #最后显示页面
#####网页加载并调用函数
self.web.page().loadFinished.connect(self.run_js)
#使用回调运行js脚本
def run_js(自身):
js_字符串=\’\’
函数myFunction()
{
var img_url=document.getElementById(\’QM_OwnerInfo_Icon\’).src;
返回img_url;
}
myFunction();
””
self.web.page().runJavaScript(js_string, self.js_callback)
# 回电
def js_callback(自身,结果):
# 打印(结果)
self.rs_succ=结果
打印(self.rs_succ)
# QMessageBox.information(self, \’提示\’, str(结果))
def downUserInfo(self):
url=self.rs_succ
标题={
\’用户代理\’ : \’Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML、Gecko 等) Chrome/77.0.3865.120 Safari/537.36\’
}
如果URL==\’无\’:
打印(\’没有\’)
: 其他
print(\’这是一个下载函数,网址是—\’, url)
响应=request.get(url,headers=headers)
使用open(\’Info.png\’, \’wb\’) 作为fp:
fp.write(响应.内容)
fp.close()
print(\’个人头像已保存!\’)
self.web.deleteLater()#销毁子控件
self.lab.setPixmap(QPixmap(\’./Info.png\’))
def get_cookies(self):
cookie=self.web.get_cookie() #获取浏览器获取到的cookie
print(\’获取cookie:\’, cookie)
self.pte.setPlainText(str(cookie))
# self.web.deleteLater()#删除浏览器子控件
创建您自己的继承自#QWebEngineView的浏览器控件
类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 # 以字典格式返回
返回cookie_str
如果__name__==\’__main__\’:
应用程序=QApplication(sys.argv)
win_root=mainWindows()
win_root.show()
sys.exit(app.exec_())
最后小编想说,我是一名Python开发工程师。
我们整理了最新的Python系统学习教程。
如果想要这些信息,请关注小编私信“01”(免费分享)。
正在学习或计划学习Python的朋友可以私信编辑“01”接收信息。
本文和图片来自网络,不代表火豚游戏立场,如若侵权请联系我们删除:https://www.huotun.com/game/669411.html