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

使用requests_html的html.render()无法获取完整页面,无法提取content-repas元素

解决无法提取餐厅菜单content-repas元素的问题

问题原因

当前代码仅完成了页面渲染,但未等待动态内容完全加载,且直接打印响应对象r无法获取具体页面元素内容。目标菜单元素.content-repas由JavaScript动态生成,需确保页面渲染完成后再执行提取操作。

修复方案

  1. 增加渲染等待时间:给render()方法添加sleep参数,让浏览器有足够时间加载动态内容
  2. 精准定位目标元素:使用find()方法直接提取.content-repas元素,而非打印整个响应对象
  3. 可选:添加请求头模拟真实浏览器:部分网站会拦截非浏览器请求,可通过User-Agent伪装规避

修改后的代码

import requests_html

url = 'https://www.crous-bordeaux.fr/restaurant/resto-u-pierre-bidart/'

s = requests_html.HTMLSession()
# 添加浏览器请求头伪装
s.headers.update({
    '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'
})

r = s.get(url)
# 延长等待时间,确保动态菜单加载完成
r.html.render(sleep=5)

# 提取目标元素并输出内容
menu_container = r.html.find('.content-repas', first=True)
if menu_container:
    print(menu_container.text)
else:
    print("未找到content-repas元素")

额外排查方向

若仍无法提取元素,可能是网站存在反爬机制,可尝试:

  • 在render()中添加keep_page=True参数保留页面状态
  • 查看并携带r.html.session.cookies中的必要Cookie
  • 模拟页面滚动操作,触发动态内容加载

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 08:35:30