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

使用requests_html无法获取MathWorks页面指定div内容的问题求助

问题分析与解决办法

问题原因

  1. 动态渲染等待不足:arender()默认等待时间可能不足以让页面JavaScript完成reflist_content区域的模块内容渲染,导致抓取时该区域为空。
  2. 未精准定位目标元素:遍历所有<div>标签的方式效率低下,且没有直接锁定id="reflist_content"的目标容器,容易遗漏关键内容。
  3. 反爬识别风险:requests_html默认请求头可能被MathWorks的反爬机制识别为爬虫,导致动态内容不返回。

修正后的代码示例

from requests_html import HTMLSession

session = HTMLSession()
# 模拟真实浏览器请求头,规避反爬检测
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'
}

url = 'https://www.mathworks.com/help/radar/referencelist.html?type=block'
r = session.get(url, headers=headers)

# 延长渲染等待时间,确保JS完全加载并渲染内容
r.html.arender(wait=5, sleep=2)

# 直接定位目标div容器
target_container = r.html.find('#reflist_content', first=True)

if target_container:
    # 提取容器内所有模块的链接
    module_links = target_container.find('a')
    for link in module_links:
        print(f"模块名称: {link.text.strip()}")
        print(f"链接地址: {link.attrs.get('href', '无链接')}\n")
else:
    print("未找到目标容器reflist_content")

关键调整说明

  • 添加自定义请求头:用真实浏览器的User-Agent模拟请求,降低被反爬拦截的概率。
  • 延长渲染等待时间:wait=5让浏览器等待5秒确保动态内容加载,sleep=2在渲染完成后再等待2秒,保证内容稳定。
  • 精准定位目标元素:通过#reflist_content选择器直接锁定目标容器,避免无效遍历。

额外注意事项

  • 如果仍无法获取内容,可尝试添加scrolldown参数(如scrolldown=3),模拟页面滚动触发内容加载。
  • 若页面后续出现登录限制,需补充登录逻辑,但当前目标页面为公开可访问状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:17:10