状态码403 Forbidden代表客户端错误,指的是服务器端有能力处理该请求,但拒绝授权访问。
Python爬取数据时,有时会遇上403错误,通常的解决方法是在请求时的header中添加User-Agent,让服务器端认为该爬取的动作是客户端发起的。然而,并不是每一次都能达到预期的效果。
如遇添加了User-Agent,依旧无法解决403的错误问题。应从HTTP请求的分析,通过分析Request Header参数,是否有其他的参数需要添加,例如Referer参数,往往服务器以Header参数设置是否接受访问的校验。
示例代码如下:
headers = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",
'Referer': "https://www.baidu.com",
……
}
request = urllib.request.Request(url, headers=headers)