写点东西《爬虫必备!selenium模拟登录!CSDN,知乎均可使用!》

写点东西《使用Python和Selenium保存浏览器数据至文件》

在进行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)

使用示例

  1. 首先,确保已经安装了Python和Selenium库,并将Chrome浏览器和Chrome驱动程序配置好。

  2. 将上述示例代码保存为storage_utils.py文件。

  3. 在代码中指定要打开的URL和保存文件的根目录。

    url = "https://www.zhihu.com/hot"
    root = ""  # 设置保存文件的根目录
    
  4. 打开命令行终端,切换到存储了storage_utils.py文件的目录。

  5. 运行以下命令启动脚本:

    python storage_utils.py
    
  6. 按照脚本提示,输入命令来执行相应的操作。

    • 输入1,将当前页面的数据保存到文件。
    • 输入2,按照文件中的配置设置浏览

器数据并刷新页面。

  • 输入0,退出脚本。

结论

本文介绍了如何使用Python和Selenium库来保存浏览器数据至文件。通过运行示例代码,你可以自由地保存和设置浏览器中的URL、Cookies以及本地存储和会话存储数据。这对于Web开发和测试中的数据管理非常有用。希望本文能对你理解和使用这一功能有所帮助!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MR_Bone

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值