You need to enable JavaScript to run this app. 爬取目标站点时Chrome Driver超时、BeautifulSoup处理过慢如何解决
优惠活动
大模型
产品
解决方案
定价
更多

爬取目标站点时Chrome Driver超时、BeautifulSoup处理过慢如何解决

网页爬取超时/加载过慢解决方案

1 优化requests基础请求参数

  • 必须携带完整的浏览器请求头,重点包含User-Agent、Accept、Accept-Encoding、Connection等字段,避免被反爬策略拦截导致挂起或无响应,同时提前请求首页获取基础cookie,适配多数站点的cookie校验规则,示例代码如下:
import requests

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1"
}
session = requests.Session()
# 先请求首页获取基础cookie
session.get("https://rock30games.com", headers=headers, timeout=10)
# 再请求目标查询接口
resp = session.get("https://rock30games.com/results?depts=&store=&description=&upc=&action=SEARCH", headers=headers, timeout=20)
  • 若页面返回内容体积过大,开启流式响应避免一次性加载全部内容,降低内存占用提升处理速度,调用方式为resp = session.get(url, headers=headers, stream=True, timeout=20)

2 优化BeautifulSoup解析效率

  • 不需要解析整个页面所有节点,先直接定位到你需要提取数据的目标DOM区域,再做后续处理,避免遍历全页无用节点
  • 优先使用lxml解析器,比默认的html.parser解析速度快3-5倍,安装lxml库后调用时指定即可:soup = BeautifulSoup(resp.text, 'lxml')
  • 如果目标数据是内嵌在页面JS代码中渲染的,不需要解析DOM,直接用正则匹配提取JS里的结构化JSON数据,效率会提升10倍以上

3 批量爬取可选异步加速方案

如果需要爬取多个分页的查询结果,可以用异步请求库aiohttp替换requests,并发请求能大幅降低整体耗时,单请求的响应速度也优于同步请求。

4 Chrome Driver超时问题修复方案

如果必须使用浏览器渲染的方式爬取,做以下配置优化即可解决超时问题:

  • 开启无头模式,禁用GPU、图片、CSS等非必要资源加载,同时配置页面加载策略为eager,仅等待DOM树加载完成就执行后续操作,无需等待静态资源加载完成,示例代码如下:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

chrome_options = Options()
chrome_options.page_load_strategy = 'eager'
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--blink-settings=imagesEnabled=false")
chrome_options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")
driver = webdriver.Chrome(options=chrome_options)
driver.set_page_load_timeout(30)
  • 如果目标数据不需要JS渲染,可额外添加chrome_options.add_argument("--disable-javascript")配置进一步提升加载速度。

内容的提问来源于stack exchange,提问作者YaAli Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 23:24:05