You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python爬虫如何访问浏览器LocalStorage?已尝试BS4与Selenium

问题解决指南

一、BS4爬取为空的原因

目标网站是单页应用(SPA),requests.get()只能获取初始的空白框架HTML,页面实际内容由JavaScript动态渲染生成,所以BS4无法提取到有效数据,必须使用支持JS渲染的工具(如Selenium)。

二、让Selenium加载本地浏览器的LocalStorage

Selenium默认启动临时浏览器实例,不会加载本地浏览器的LocalStorage。要保留原有LocalStorage,需指定加载本地用户数据目录:

Chrome示例代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

def getPage():
    url = "https://dofusdb.fr/fr/tools/craft-manager"
    options = Options()
    # 替换为你的Chrome用户数据路径
    # Windows路径示例:C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data
    # Mac路径示例:~/Library/Application Support/Google/Chrome/Default
    options.add_argument(r"--user-data-dir=C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data")
    # 可选:指定具体配置文件(多用户时用)
    # options.add_argument("--profile-directory=Default")
    
    # 若使用无头模式,需添加以下参数避免渲染问题
    # options.headless = True
    # options.add_argument("--window-size=1920,1080")
    
    driver = webdriver.Chrome(options=options)
    driver.get(url)
    
    # 等待页面加载完成(显式等待更可靠)
    WebDriverWait(driver, 15).until(
        EC.presence_of_element_located((By.CLASS_NAME, "q-pa-sm"))
    )
    
    # 获取渲染后的页面源码
    page_source = driver.page_source
    
    # 直接提取LocalStorage数据(无需复杂JS知识)
    local_storage = driver.execute_script("""
        const data = {};
        for (let i = 0; i < localStorage.length; i++) {
            const key = localStorage.key(i);
            data[key] = localStorage.getItem(key);
        }
        return data;
    """)
    print("LocalStorage数据:", local_storage)
    
    driver.quit()
    return page_source

注意事项

  • 运行前需关闭本地Chrome浏览器,避免配置文件冲突。
  • 路径需替换为你自己的用户数据路径,可通过Chrome地址栏输入chrome://version/查看"个人资料路径"。

三、直接提取LocalStorage数据

无需深入学习JavaScript,使用Selenium的execute_script()方法即可一键获取LocalStorage所有键值对,返回结果为Python字典,直接处理即可。

四、Opera浏览器的Selenium配置

  1. 下载对应版本的OperaDriver:需与你的Opera浏览器版本完全匹配,可从Opera官方开发者渠道获取。
  2. 配置用户数据路径:
    • Windows路径:C:\Users\你的用户名\AppData\Local\Opera Software\Opera Stable
    • Mac路径:~/Library/Application Support/com.operasoftware.Opera/
  3. 示例代码:
from selenium import webdriver
from selenium.webdriver.opera.options import Options

def getOperaPage():
    url = "https://dofusdb.fr/fr/tools/craft-manager"
    options = Options()
    options.add_argument(r"--user-data-dir=C:\Users\YourUsername\AppData\Local\Opera Software\Opera Stable")
    
    # 指定OperaDriver的路径
    driver = webdriver.Opera(executable_path=r"path/to/operadriver.exe", options=options)
    driver.get(url)
    
    # 等待加载并提取数据(同Chrome逻辑)
    driver.implicitly_wait(10)
    local_storage = driver.execute_script("""
        const data = {};
        for (let i = 0; i < localStorage.length; i++) {
            const key = localStorage.key(i);
            data[key] = localStorage.getItem(key);
        }
        return data;
    """)
    
    driver.quit()
    return local_storage

五、关于本地LocalStorage的存储位置

LocalStorage数据存储在浏览器的配置文件夹中,以SQLite数据库文件形式保存:

  • Chrome:用户数据路径\Local Storage\leveldb下的.ldb文件
  • Firefox:用户数据路径\storage\default\moz-safe-about+home\idb下的文件
    但直接读取这些文件非常复杂,远不如用Selenium通过JS提取方便,不建议直接操作本地文件。

内容的提问来源于stack exchange,提问作者Noah Fraiture

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 11:10:34