|
发表于 2024-5-8 07:48:46
|
显示全部楼层
这个错误是因为在`fetch_cookies`函数中,变量`driver`未被正确定义,导致无法访问。
以下是修复后的代码:
- import os
- from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QComboBox, QPushButton, QLabel, QLineEdit
- from selenium import webdriver
- from selenium.webdriver.edge.service import Service as EdgeService
- from selenium.webdriver.edge.options import Options as EdgeOptions
- from selenium.webdriver.common.by import By
- from selenium.webdriver.support.ui import WebDriverWait
- from selenium.webdriver.support import expected_conditions as EC
- class BrowserCookies(QMainWindow):
- def __init__(self):
- super().__init__()
- self.setWindowTitle("Browser Cookies")
- self.resize(400, 200)
- # 创建主部件和布局
- widget = QWidget()
- layout = QVBoxLayout()
- widget.setLayout(layout)
- self.setCentralWidget(widget)
- # 创建浏览器选择下拉框
- self.browser_combo = QComboBox()
- self.browser_combo.addItems(["Microsoft Edge", "Chrome", "Firefox"])
- layout.addWidget(self.browser_combo)
- # 创建网站URL输入框和按钮
- self.website_label = QLabel("Website URL:")
- self.website_input = QLineEdit()
- layout.addWidget(self.website_label)
- layout.addWidget(self.website_input)
- # 创建获取cookies按钮
- self.get_cookies_btn = QPushButton("获取Cookies")
- layout.addWidget(self.get_cookies_btn)
- self.get_cookies_btn.clicked.connect(self.get_cookies)
- def fetch_cookies(self, browser_path, website_url):
- if browser_path == "Microsoft Edge":
- options = EdgeOptions()
- options.use_chromium = True
- options.add_argument("--headless") # 以无头模式启动浏览器,隐藏界面
- service = EdgeService(executable_path="msedgedriver.exe")
- driver = webdriver.Edge(service=service, options=options)
- elif browser_path == "Chrome":
- # 添加Chrome浏览器的处理逻辑,类似Edge浏览器
- pass
- elif browser_path == "Firefox":
- # 添加Firefox浏览器的处理逻辑,类似Edge浏览器
- pass
- driver.get(website_url)
- WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "body")))
- cookies = driver.get_cookies()
- driver.quit()
- return cookies
- def get_cookies(self):
- browser = self.browser_combo.currentText()
- website_url = self.website_input.text()
- if not website_url.startswith("http"):
- website_url = "https://" + website_url
- cookies = self.fetch_cookies(browser, website_url)
- if cookies:
- site_name = website_url.split("//")[1].split("/")[0]
- cookies_file = os.path.join("E:\Temp", f"{site_name}_cookies.txt")
- with open(cookies_file, "w") as f:
- for cookie in cookies:
- f.write(f"{cookie['name']}={cookie['value']}\n")
- QMessageBox.information(self, "提示", "Cookies获取成功!")
- else:
- QMessageBox.warning(self, "警告", "无法获取Cookies!")
- if __name__ == "__main__":
- app = QApplication([])
- window = BrowserCookies()
- window.show()
- app.exec()
复制代码
请确保驱动程序(如msedgedriver.exe)与浏览器版本相匹配,并根据需要进行适当修改。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|