- A+
在上一篇文章pyqt5的QWebEngineView实现登录百度网盘账号并储存cookies中提到了关于如何获取浏览网页登录后的cookies信息,主要方式是通过监听信号并连接槽函数。这种方式能够很及时的获取到当前网址变化后增加的cookies信息,同时文末也提到了另外一种获取浏览器默认保存的cookie的方式。现在具体说说如何实现:
一、浏览器默认保存的cookie存储位置
首先,通过QWebEngineView实现基本的浏览网页界面程序,运行后QtWebEngine会在用户目录AppData\Local下生成缓存文件夹,该文件夹是隐藏的,需要设置文件夹隐藏可见才能具体看到。示例如下:
C:\Users\Administrator\AppData\Local\python\QtWebEngine\Default
其中,包含了缓存文件,同时也包含了cookies信息,cookies保存在QtWebEngine\Default文件夹中。
二、cookie信息解析
cookie使用sqlite数据库文件进行存储的,知道了cookies的位置同时知道了文件的类型,那么用Python就很好处理了,使用到的是sqlite3库。具体解析代码如下:
- # -*-coding:utf-8-*-
- import sqlite3
- class ReadSqlite(object):
- def __init__(self, path):
- self.conn = sqlite3.connect(path)
- self.cursor = self.conn.cursor()
- self.cookies = dict()
- def read_cookie(self):
- try:
- self.cursor.execute('select name,value from cookies;')
- cookies = self.cursor.fetchall()
- for key, value in cookies:
- self.cookies[key] = value
- except:
- pass
- self.cursor.close()
- self.conn.close()
- return self.cookies
- if __name__ == '__main__':
- sqlite = ReadSqlite('cookie的文件存储位置')
- sqlite.read_cookie()
需要注意的是浏览器默认保存的cookies里面包含了所有浏览登录网页的cookie信息,需要根据实际情况通过host_key进行过滤提取。
三、cookie及缓存位置设置
QWebEngineView浏览器默认的缓存存储位置已经知道了,但是通过什么方式来提取路径以及如何自定义缓存、cookies等路径呢?查找路径及自定义缓存路径需要使用到QWebEngineProfile,具体方法如下:
在导入QWebEngineView的同时也导入QWebEngineProfile,并通过persistentStoragePath()函数即可获取cookie的路径了。
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile
QWebEngineProfile.defaultProfile().persistentStoragePath()
设置缓存、cookie的路径同样类似,也可以清除cookie
- default_profile = QWebEngineProfile.defaultProfile()
- default_profile.setCachePath('自定义的存储路径')
- default_profile.setPersistentStoragePath('自定义的存储路径')
- default_cookie = default_profile.cookieStore()
- default_cookie.deleteAllCookies()