pyqt QWebEngineView浏览器设置cookie用法

  • A+
所属分类:编程语言

pyqt5中如需要浏览器来显示界面可以使用QWebEngineView,这个View对象在pyqt5中需要单独进行安装,pip install PyQtWebEngine 安装好后可以正常使用了。QWebEngineView可以获取到登录后的cookie,对于抓包较为复杂的网页可以使用获取到的cookie进行后台其他处理,如:交给requests进行处理。同样,PyQtWebEngine也可以将已经获取到的cookie设置到浏览器中,直接显示登陆成功,免二次登陆,如:第一次登陆后将获取到的cookie序列化后保存到本地,下次再打开浏览器时直接反序列化后获得cookie信息并设置到浏览器中,这样就避免了二次登陆的问题。

  1. # -*-coding:utf-8-*-
  2. # cython: language_level=3
  3. import sys
  4. from PyQt5.QtWidgets import QApplication,QMainWindow
  5. from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile, QWebEnginePage
  6. from PyQt5.QtCore import QUrl, QByteArray
  7. from PyQt5.QtNetwork import QNetworkCookie
  8. ___author___ = 'anshingy'
  9. ___contact___ = 'qq541182238'
  10. ___date___ = '2019-08-06 16:39'
  11. class Browser(QMainWindow):
  12.     def __init__(self, my_cookie_dict):
  13.         super(Browser, self).__init__()
  14.         self.my_cookie_dict = my_cookie_dict
  15.         self.browser = QWebEngineView()
  16.         self.init_ui()
  17.     def init_ui(self):
  18.         self.setCentralWidget(self.browser)
  19.         self.resize(500,300)
  20.         self.setWindowTitle('设置浏览器cookie')
  21.         self.browser.load(QUrl('http://baidu.com'))
  22.         # default_profile = QWebEngineProfile.defaultProfile()
  23.         # default_profile.setCachePath(UI_CACHE_PATH)
  24.         # default_profile.setPersistentStoragePath(UI_CACHE_PATH)
  25.         # default_cookie = default_profile.cookieStore()
  26.         # default_cookie.deleteAllCookies()
  27.         # 设置cookies保存的槽函数
  28.         # default_cookie.cookieAdded.connect(self.on_cookie_add)
  29.         for key, value in self.my_cookie_dict.items():
  30.             cookie = QNetworkCookie(QByteArray(key.encode()), QByteArray(value.encode()))
  31.             cookie.setDomain(('.baidu.com'))
  32.             cookie.setPath(('/'))
  33.             # cookie.setSecure(False)
  34.             # self.browser.profile().defaultProfile().setHttpUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.10 Safari/537.36')
  35.             self.browser.profile().cookieStore().setCookie(cookie)
  36.         self.browser.reload()
  37. if __name__ == '__main__':
  38.     app = QApplication(sys.argv)
  39.     # cookie字典
  40.     cookie_dict = {}
  41.     browser = Browser(cookie_dict)
  42.     browser.show()
  43.     app.exec_()

以上是将已经存在的cookie字典直接设置到browser浏览器中的代码,设置后刷新浏览器。

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: