使用 Python 请求进行 Web 抓取会出现 401 错误

问题描述 投票:0回答:2

我使用一段时间从《华尔街日报》抓取财务数据的一些代码刚刚停止工作,现在运行时出现 401 错误。

我尝试过更改标题,但这不起作用。也许我现在需要登录?

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'}
page=requests.get(url,headers=headers)
print('Page status code',page.status_code)
python web-scraping web python-requests
2个回答
0
投票

《华尔街日报》似乎设置了验证码,可能是作为一种反抓取措施。获取 API 凭证可能是解决这个问题的方法。至少值得研究一下。

看一下返回的内容:

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'}
page=requests.get(url,headers=headers)
print('Page status code',page.content)

内容:

Page status code b'<html><head><title>wsj.com</title><style>#cmsg{animation: A 1.5s;}@keyframes A{0%{opacity:0;}99%{opacity:0;}100%{opacity:1;}}</style></head><body style="margin:0"><p id="cmsg">Please enable JS and disable any ad blocker</p><script data-cfasync="false">var dd={\'rt\':\'c\',\'cid\':\'AHrlqAAAAAMArpN2vLo4VCUAMhA_Hw==\',\'hsh\':\'D428D51E28968797BC27FB9153435D\',\'t\':\'fe\',\'s\':47129,\'e\':\'e92911034aa65357785f6313394521ae3cbda7ac3d302f1fdd231820f33c85a6\',\'host\':\'geo.captcha-delivery.com\'}</script><script data-cfasync="false" src="https://ct.captcha-delivery.com/c.js"></script></body></html>\n'

0
投票

是的,我认为你应该尝试使用凭据,如果返回的状态代码是 403 这意味着你未经授权,祝你好运:)

© www.soinside.com 2019 - 2024. All rights reserved.