欢迎访问宙启技术站
智能推送

PyQt5.QtWebEngineWidgetsQWebEnginePage()实现网页Cookie管理功能

发布时间:2024-01-05 21:28:36

PyQt5.QtWebEngineWidgets模块提供了一个用于展示Web内容的部件。这个模块中的QWebEnginePage类提供了对网页内容的操作和交互的方法。

QWebEnginePage类中的cookies()方法可以用于获取当前加载的网页的所有cookie。该方法返回一个列表,列表中的每个元素是一个字典,包含了cookie的各种属性,如名称、值、路径、域等。

这个方法可以用于实现网页Cookie管理功能。下面是一个简单的使用例子:

from PyQt5.QtWidgets import QApplication, QMainWindow, QMenu, QAction
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):
        self.webview = QWebEngineView(self)
        self.setCentralWidget(self.webview)

        # 创建Cookie菜单
        self.cookieMenu = QMenu(self)
        self.cookieMenu.addAction(QAction('显示Cookie', self, triggered=self.showCookie))
        self.cookieMenu.addAction(QAction('删除Cookie', self, triggered=self.deleteCookie))

        # 将Cookie菜单添加到主窗口的菜单栏上
        self.menuBar().addMenu(self.cookieMenu.menuAction())

        # 加载网页
        self.loadPage('https://www.baidu.com')

    def loadPage(self, url):
        self.webview.loadStarted.connect(self.startLoading)
        self.webview.loadFinished.connect(self.finishLoading)
        self.webview.load(QUrl(url))

    def startLoading(self):
        self.setWindowTitle("正在加载...")

    def finishLoading(self):
        self.setWindowTitle(self.webview.title())

    def showCookie(self):
        page = self.webview.page()
        cookies = page.cookies()

        # 在控制台输出Cookie信息
        for cookie in cookies:
            print("Name:", cookie['name'])
            print("Value:", cookie['value'])
            print("Domain:", cookie['domain'])
            print("Path:", cookie['path'])
            print("Secure:", cookie['secure'])
            print("HttpOnly:", cookie['httponly'])
            print("Expiration:", cookie['expiration'])

    def deleteCookie(self):
        page = self.webview.page()
        cookies = page.cookies()

        # 删除所有的Cookie
        for cookie in cookies:
            page.deleteCookie(cookie)

if __name__ == '__main__':
    app = QApplication([])
    window = MainWindow()
    window.show()
    app.exec_()

在这个例子中,我们创建了一个带有Web视图的主窗口。我们使用loadPage()方法加载了百度网页,并在窗口的标题栏上显示了网页的标题。通过右键点击菜单栏上的"显示Cookie"菜单项,我们可以在控制台输出当前加载网页的所有Cookie信息。通过右键点击菜单栏上的"删除Cookie"菜单项,我们可以删除当前加载网页的所有Cookie。

请注意,要运行这个例子,你需要安装PyQt5模块和PyQtWebEngine模块。

以上就是使用PyQt5.QtWebEngineWidgets.QWebEnginePage来实现网页Cookie管理功能的示例。希望对你有所帮助!