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

实时Django项目中Selenium性能过慢及内存占用过高问题求助

优化动态页面爬取性能的实用方案

1. 优先抓取目标站点的API接口(最有效)

直接绕过前端渲染,找到加载帖子的核心接口:

  • 打开目标站点的开发者工具(F12),切换到网络标签,刷新页面后筛选XHR或Fetch请求
  • 定位到返回帖子列表的接口,分析请求参数(关键词、城市、分页等),直接用requests或aiohttp发送请求获取JSON数据
  • 这种方式比浏览器渲染快10-100倍,完全不会有内存占用问题

2. 替换Selenium为更轻量的无头浏览器工具

如果必须依赖浏览器渲染,换用资源消耗更低的工具:

  • Playwright:默认无头模式,资源占用远低于Selenium,支持自动等待元素加载,代码示例:
    from playwright.sync_api import sync_playwright
    
    def get_cards(url):
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=True, args=["--disable-images", "--disable-css"])
            page = browser.new_page()
            page.goto(url, timeout=10000)
            # 提取前3条数据后立即关闭浏览器
            cards = page.locator(".post-card").first(3).all()
            data = [{"title": card.locator(".title").text_content(), "link": card.get_attribute("href")} for card in cards]
            browser.close()
            return data
    
  • Pyppeteer:基于Chrome DevTools协议,比Selenium更轻量,同样支持无头模式

3. 对现有Selenium做极致优化(保留Selenium的前提下)

如果不想更换工具,通过以下设置大幅降低资源消耗:

  • 启用新版无头模式:
    from selenium import webdriver
    from selenium.webdriver.chrome.options import Options
    
    options = Options()
    options.add_argument("--headless=new")  # 新版无头模式资源占用显著降低
    
  • 禁用非必要资源加载:
    options.add_argument("--disable-images")
    options.add_argument("--disable-css")
    options.add_argument("--disable-extensions")
    options.add_argument("--disable-plugins")
    # 若帖子加载无需JS,可添加:options.add_argument("--disable-javascript")
    
  • 限制加载超时,爬完即终止:
    driver.set_page_load_timeout(10)  # 设置10秒超时
    # 提取完前3条数据后立即调用driver.quit(),无需等待页面完全加载
    
  • 复用浏览器实例:不要每次爬取都新建浏览器,可全局复用实例,爬取多个URL后再关闭

4. 增加本地缓存机制

针对相同的关键词+城市筛选条件,缓存爬取结果:

  • 用字典、JSON文件或SQLite存储已爬取的查询结果,下次遇到相同请求直接返回缓存,避免重复爬取

5. 异步并行爬取多站点

如果需要爬多个目标站点,用异步方式提升效率:

  • 配合API接口用aiohttp做异步请求,或用Playwright的异步API同时处理多个页面

内容的提问来源于stack exchange,提问作者Novartis Nk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:08