使用Python Requests爬取数据返回401错误的解决求助
问题解答
401错误明确表示未授权访问,你的情况大概率是《华尔街日报》(WSJ)更新了访问限制,现在这类金融数据页面需要登录账号才能正常访问。
原因分析
之前开放的公开数据页面,现在被纳入了登录墙之后,未携带登录凭证的请求会直接被拦截返回401。仅修改User-Agent已经不足以绕过这个限制,网站现在会校验用户的登录状态(通常通过Cookie中的会话凭证实现)。
可行解决办法
模拟登录获取会话凭证:
手动登录WSJ官网,从浏览器开发者工具中抓取登录后的Cookie信息,将其添加到请求头中。修改后的代码示例如下:import requests url='https://www.wsj.com/market-data/quotes/bond/JP/TMBMKJP-01Y?mod=quote_search' headers = { 'User-Agent': 'Mozilla/5.0 (X11;Linux x86_64;rv:12.0) Gecko/20100101 Firefox/12.0', # 替换成你自己登录后的Cookie内容 'Cookie': 'your_login_cookie_here' } page=requests.get(url,headers=headers) print('Page status code',page.status_code)注意:Cookie存在有效期,过期后需要重新抓取。
补充完整请求头:
除了Cookie,还可以在浏览器中查看正常访问时的完整请求头(比如Referer、Accept-Language等),把这些字段都添加到你的请求头里,进一步模拟真实浏览器的请求行为。确认官方API渠道:
WSJ可能提供了官方金融数据API,使用合法API既能避免反爬问题,数据获取也更稳定,但这类API通常需要付费或申请权限。
内容的提问来源于stack exchange,提问作者SteveB
相关产品推荐
相关产品推荐

