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

如何使用requests_html实现等待页面完全加载后再爬取内容?

requests_html等待动态页面加载的实现方法

requests_html可以实现等待页面加载完成的功能,你可以通过调整render()方法的参数满足需求,同时你的现有代码存在一处核心逻辑错误会导致即使渲染完成也拿不到对应内容。

调整要点

  • 给render()方法添加sleep参数:参数单位为秒,代表页面完成基础渲染后额外等待的时长,专门用于应对异步加载内容的页面,这类电商列表页建议设置2~5秒即可。
  • 可选添加timeout参数:设置页面渲染的最长超时时间,避免页面异常时程序长时间卡住,默认值为8秒,可根据网络情况适当调高。
  • 修正内容获取逻辑:response.content是请求返回的原始未渲染静态源码,渲染后的完整页面内容需要从response.html.html属性获取。

修正后代码

from requests_html import HTMLSession
from bs4 import BeautifulSoup
from lxml import etree

s = HTMLSession()
response = s.get(
    'https://www.dickssportinggoods.com/f/tents-accessories?pageNumber=2')
# sleep参数可根据实际加载速度调整,网络差可以适当调大
response.html.render(sleep=3, timeout=20)

# 调用渲染后的页面内容
soup = BeautifulSoup(response.html.html, "html.parser")
dom = etree.HTML(str(soup))
item = dom.xpath('//a[@class="rs_product_description d-block"]/text()')[0]
print(item)

注意事项

首次调用render()方法时会自动下载对应的Chromium内核,等待下载完成即可正常运行。如果调整sleep=3后仍拿不到对应内容,可以尝试继续加大sleep的数值。

内容的提问来源于stack exchange,提问作者Ibtsam Ahmad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 09:30:05