使用Python Requests爬取AngularJS页面缺失Controller数据的问题
排查方案:requests无法获取页面script数据的解决思路
- 完整复刻浏览器请求头:打开Chrome调试工具的Network面板,刷新目标页面后找到对应请求,复制全部请求头(包含Cookie、Accept、Accept-Language、Referer等所有字段),将这些完整参数传入requests的
headers中。很多网站会校验多请求头的组合,而非仅User-Agent。 - 校验Cookie的影响:浏览器中可能存在会话或登录状态的Cookie,服务器会据此返回差异化内容。可从Chrome的Application面板复制当前页面的Cookie,添加到requests的
cookies参数,或使用requests.Session()维持会话状态。 - 模拟前置请求流程:部分网站要求先访问首页等前置页面建立会话后,再请求目标页面。可先用
requests.get访问网站首页,再通过同一个Session对象请求基金页面。 - 用curl做对比测试:使用curl命令带上完整请求头测试目标URL,若curl能获取到script块,说明requests的请求头仍有遗漏;若curl也无法获取,可能服务器存在更复杂的检测逻辑(但你禁用JS仍能拿到,大概率还是请求头问题)。
- 对比请求细节差异:通过Chrome Network面板或抓包工具,对比浏览器与requests请求的所有细节:包括请求方法、头字段顺序(部分网站会校验)、编码格式、查询参数等,找出不一致的地方。
- 备选:使用无头浏览器:若以上方法均无效,直接用Playwright或Selenium等无头浏览器工具,完全模拟浏览器的请求与渲染流程,直接提取页面中的script数据。这种方法虽资源消耗较高,但能绕过大部分服务器端的客户端检测。
内容的提问来源于stack exchange,提问作者YKdvd
相关产品推荐
相关产品推荐

