在进行Web开发和测试过程中,有时候我们需要保存浏览器中的数据,例如URL、Cookies以及本地存储和会话存储数据。本文介绍了如何使用Python和Selenium来实现这一功能,并将数据保存到文件中。
项目背景
在Web开发和测试中,我们经常需要获取和保存浏览器中的数据,以便后续分析和使用。例如,我们可能需要保存当前页面的URL、Cookies信息以及本地存储和会话存储中的数据。为了实现这一功能,我们可以使用Python和Selenium库。
环境设置
在开始之前,我们需要确保已经安装了以下依赖项:
- Python(建议使用Python 3.x版本)
- Selenium库
- Chrome浏览器
- Chrome驱动程序
你可以使用以下命令来安装Selenium库:
pip install selenium
代码实现
下面是一个示例代码,演示了如何使用Python和Selenium来保存浏览器数据至文件:
import json
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from urllib.parse import urlparse
class StorageUtils:
def __init__(self, root):
self.root = root
options = Options()
options.add_argument("disable-blink-features=AutomationControlled")
self.driver = webdriver.Chrome(options=options)
def open_page(self, url=""):
if not url:
url = input("请输入要打开的URL:")
self.driver.get(url)
parsed_url = urlparse(url)
domain = parsed_url.netloc.replace(".", "-").replace(":", "$")
filename = domain + "-storage.txt"
self.data_file = os.path.join(self.root, filename)
def open_page_has_storage(self, url=""):
self.open_page(url)
self.set_data()
def save_data(self):
data = {
"url": self.driver.current_url,
"cookies": self.driver.get_cookies(),
"local_storage": self.driver.execute_script("return JSON.stringify(localStorage);"),
"session_storage": self.driver.execute_script("return JSON.stringify(sessionStorage);")
}
with open(self.data_file, "w") as f:
f.write("【url】\n{}\n\n".format(data["url"]))
f.write("【cookie】\n{}\n\n".format(json.dumps(data["cookies"])))
f.write("【local storage】\n{}\n\n".format(data["local_storage"]))
f.write("【session storage】\n{}\n\n".format(data["session_storage"]))
print("已保存数据到文件:", self.data_file)
def set_data(self):
try:
with open(self.data_file, "r") as f:
data = f.read()
except FileNotFoundError:
print("文件不存在")
return None
url = ""
cookies = None
local_storage = None
session_storage = None
if "【url】" in data:
start_index = data.index("【url】") + len("【url】")
end_index = data.index("\n\n【cookie】")
url = data[start_index:end_index].strip()
if "【cookie】" in data:
start_index = data.index("【cookie】") + len("【cookie】")
end_index = data.index("【local storage】")
cookies = json.loads(data[start_index:end_index].strip())
if "【local storage】" in data:
start_index = data.index("【local storage】") + len("【local storage】")
end_index = data.index("【session storage】")
local_storage = data[start_index:end_index].strip()
if "【session storage】" in data:
start_index = data.index("【session storage】") + len("【session storage】")
session_storage = data[start_index:].strip()
if cookies is not None:
self.set_cookies(cookies)
if local_storage is not None:
self.set_local_storage(local_storage)
if session_storage is not None:
self.set_session_storage(session_storage)
self.refresh()
return url, cookies, local_storage, session_storage
def set_cookies(self, cookies):
for cookie in cookies:
self.driver.add_cookie(cookie)
print("已设置 Cookies")
def set_local_storage(self, local_storage_data):
script = "localStorage.clear();"
self.driver.execute_script(script)
script = "Object.assign(localStorage, {});".format(local_storage_data)
self.driver.execute_script(script)
print("已设置本地存储")
def set_session_storage(self, session_storage_data):
script = "sessionStorage.clear();"
self.driver.execute_script(script)
script = "Object.assign(sessionStorage, {});".format(session_storage_data)
self.driver.execute_script(script)
print("已设置会话存储")
def start(self, url=""):
self.open_page_has_storage(url)
while True:
user_input = input("1:获取Storage.txt配置.\n2:按Storage.txt配置并刷新页面.\n0:退出\n请输入命令:")
if user_input == "1":
self.save_data()
elif user_input == "2":
self.set_data()
elif user_input == "0":
break
self.close()
def refresh(self):
self.driver.refresh()
def close(self):
self.driver.quit()
if __name__ == "__main__":
url = "https://www.zhihu.com/hot"
root = "" # 设置保存文件的根目录
storage_utils = StorageUtils(root)
storage_utils.start(url)
使用示例
-
首先,确保已经安装了Python和Selenium库,并将Chrome浏览器和Chrome驱动程序配置好。
-
将上述示例代码保存为
storage_utils.py
文件。 -
在代码中指定要打开的URL和保存文件的根目录。
url = "https://www.zhihu.com/hot" root = "" # 设置保存文件的根目录
-
打开命令行终端,切换到存储了
storage_utils.py
文件的目录。 -
运行以下命令启动脚本:
python storage_utils.py
-
按照脚本提示,输入命令来执行相应的操作。
- 输入
1
,将当前页面的数据保存到文件。 - 输入
2
,按照文件中的配置设置浏览
- 输入
器数据并刷新页面。
- 输入
0
,退出脚本。
结论
本文介绍了如何使用Python和Selenium库来保存浏览器数据至文件。通过运行示例代码,你可以自由地保存和设置浏览器中的URL、Cookies以及本地存储和会话存储数据。这对于Web开发和测试中的数据管理非常有用。希望本文能对你理解和使用这一功能有所帮助!