使用pyside6的QWebEngineView保存和读取cookie

网上很多都没讲全,对于刚了解的朋友不太友好,自己整理下记录下pyside6的QWebEngineView如何使用并保存和读取cookie的,解决当程序退出后重复登录的问题:

from PySide6.QtWidgets import QApplication, QMainWindow
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtNetwork import QNetworkAccessManager, QNetworkCookie,QNetworkCookieJar
from PySide6.QtCore import QFile, QIODevice, QTextStream,QUrl,QByteArray

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.weburl="https://fxg.jinritemai.com/login/common"
        self.view = QWebEngineView()
        self.setCentralWidget(self.view)
        #self.save_cookies()
        self.load_cookies()
        # 加载一个网页,以便产生一些 cookies
        #self.view.page().load(QUrl("https://fxg.jinritemai.com/ffa/morder/order/list"))
        self.view.page().load(QUrl(self.weburl))
        #self.cookie_store.cookieAdded.connect(self.handlecookie))
        #页面加载完成执行
        self.view.page().loadFinished.connect(self.on_page_load_finished)

    # 页面加载完成执行
    def on_page_load_finished(self,txt):
        # 需要确保页面加载完成后保存cookies
        self.save_cookies()
        #self.view.page().runJavaScript("document.readyState;",0, self.load_cookies)

    #保存cookie
    def save_cookies(self):
        # 获取当前使用的 WebEngineProfile
        self.cookie_store.loadAllCookies()

    def load_cookies(self):
        profile = self.view.page().profile()
        self.cookie_store = profile.cookieStore()
        with open('cookies.txt', 'r') as file:
            for line in file:
                # 创建一个cookie
                cookie = QNetworkCookie()
                mycookie=cookie.parseCookies(line.encode("utf-8"))
                print(mycookie)
                # 将cookie添加到cookie存储
                self.cookie_store.setCookie(mycookie[0])
        self.cookie_store.loadAllCookies()


    def handlecookie(self,cookie):
        cookiedata=str(cookie.toRawForm().data(),encoding="utf-8")
        # # #打开一个文件用于写入 cookies
        with open("cookies.txt", 'a', encoding="utf-8") as fw:  # 循环写入
             fw.write(cookiedata+"\n")


# 创建应用实例
app = QApplication([])

# 创建主窗口实例
window = MainWindow()
window.show()

# 运行应用
app.exec()

猜你喜欢

转载自blog.csdn.net/jylonger/article/details/139838854
今日推荐