python - 从 QWebEngineProfile 获取 cookie 作为字典

标签 python python-3.x cookies pyqt5 qtwebengine

标题确实说明了一切。想知道如何获取 QWebEngineProfile 的 cookie 作为其名称和值的字典或 json 格式。我正在使用 PyQt5。

最佳答案

QWebEngineCookieStore是一个管理cookie的类,我们可以通过cookieStore()方法访问这个对象,为了获取cookie可以通过cookieAdded 信号,下面我们将展示一个示例:

class MainWindow(QMainWindow):
    def __init__(self, *args, **kwargs):
        QMainWindow.__init__(self, *args, **kwargs)
        self.webview = QWebEngineView()
        profile = QWebEngineProfile("storage", self.webview)
        cookie_store = profile.cookieStore()
        cookie_store.cookieAdded.connect(self.onCookieAdded)
        self.cookies = []
        webpage = QWebEnginePage(profile, self.webview)
        self.webview.setPage(webpage)
        self.webview.load(
            QUrl("https://stackoverflow.com/questions/48150321/obtain-cookies-as-dictionary-from-a-qwebengineprofile"))
        self.setCentralWidget(self.webview)

    def onCookieAdded(self, cookie):
        for c in self.cookies:
            if c.hasSameIdentifier(cookie):
                return
        self.cookies.append(QNetworkCookie(cookie))
        self.toJson()

    def toJson(self):
        cookies_list_info = []
        for c in self.cookies:
            data = {"name": bytearray(c.name()).decode(), "domain": c.domain(), "value": bytearray(c.value()).decode(),
                    "path": c.path(), "expirationDate": c.expirationDate().toString(Qt.ISODate), "secure": c.isSecure(),
                    "httponly": c.isHttpOnly()}
            cookies_list_info.append(data)
        print("Cookie as list of dictionary:")
        print(cookies_list_info)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MainWindow()
    w.show()
    sys.exit(app.exec_())

关于python - 从 QWebEngineProfile 获取 cookie 作为字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48150321/

相关文章:

python - 嵌套for循环构造数据的pythonic方式?

python - 用 Python 编写手动 pop 函数

python - 使用 Python 将变量添加到现有的 Netcdf4 文件

java - 访问 REST Web 服务的摘要式身份验证

python - Google Colab - 从 GitHub 安装? GLRM

python - 用 Python 发帖

python - 根据其他列值/Pandas -Python 在数据框中创建 ID 列

php - session 保存在哪里?

Java - 如何正确获取cookie并将其添加到请求 header ?

python - Micromamba 和 Dockerfile 错误 :/bin/bash: activate: No such file or directory