| 23 | |
| 24 | |
| 25 | class WebEngineView(QWebEngineView): |
| 26 | DomainCookies = {} # 存放domain的key-value |
| 27 | PathCookies = {} # 存放domain+path的key-value |
| 28 | |
| 29 | def __init__(self, *args, **kwargs): |
| 30 | super(WebEngineView, self).__init__(*args, **kwargs) |
| 31 | self.cookieView = QTextEdit() |
| 32 | self.cookieView.resize(800, 400) |
| 33 | self.cookieView.move(400, 400) |
| 34 | self.cookieView.setWindowTitle('Cookies') |
| 35 | self.cookieView.show() |
| 36 | # 绑定cookie被添加的信号槽 |
| 37 | QWebEngineProfile.defaultProfile().cookieStore( |
| 38 | ).cookieAdded.connect(self.onCookieAdd) |
| 39 | self.loadFinished.connect(self.onLoadFinished) |
| 40 | |
| 41 | def closeEvent(self, event): |
| 42 | self.cookieView.close() |
| 43 | super(WebEngineView, self).closeEvent(event) |
| 44 | |
| 45 | def bytestostr(self, data): |
| 46 | if isinstance(data, str): |
| 47 | return data |
| 48 | if isinstance(data, QByteArray): |
| 49 | data = data.data() |
| 50 | if isinstance(data, bytes): |
| 51 | data = data.decode(errors='ignore') |
| 52 | else: |
| 53 | data = str(data) |
| 54 | return data |
| 55 | |
| 56 | def onLoadFinished(self): |
| 57 | print("*****AllDomainCookies:", self.getAllDomainCookies()) |
| 58 | print("*****AllPathCookies:", self.getAllPathCookies()) |
| 59 | self.cookieView.append( |
| 60 | "AllDomainCookies: " + self.bytestostr(self.getAllDomainCookies())) |
| 61 | self.cookieView.append('') |
| 62 | self.cookieView.append( |
| 63 | "AllPathCookies: " + self.bytestostr(self.getAllPathCookies())) |
| 64 | self.cookieView.append('') |
| 65 | |
| 66 | print("*****pyqt.site cookie:", self.getDomainCookies(".pyqt.site")) |
| 67 | print("*****pyqt.site / path cookie:", |
| 68 | self.getPathCookies(".pyqt.site/")) |
| 69 | |
| 70 | def getAllDomainCookies(self): |
| 71 | return self.DomainCookies |
| 72 | |
| 73 | def getDomainCookies(self, domain): |
| 74 | return self.DomainCookies.get(domain, {}) |
| 75 | |
| 76 | def getAllPathCookies(self): |
| 77 | return self.PathCookies |
| 78 | |
| 79 | def getPathCookies(self, dpath): |
| 80 | return self.PathCookies.get(dpath, {}) |
| 81 | |
| 82 | def onCookieAdd(self, cookie): |