python3 raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403

Posted littlevigra

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3 raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403相关的知识,希望对你有一定的参考价值。

1.分析:

如果用 urllib.request.urlopen 方式打开一个URL,服务器端只会收到一个单纯的对于该页面访问的请求,但是服务器并不知道发送这个请求使用的浏览器,操作系统,硬件平台等信息,而缺失这些信息的请求往往都是非正常的访问,例如爬虫.
有些网站验证请求信息中的UserAgent(它的信息包括硬件平台、系统软件、应用软件和用户个人偏好),如果UserAgent存在异常或者是不存在,那么这次请求将会被拒绝(如上错误信息所示)
所以可以尝试在请求中加入UserAgent的信息
方案:
对于Python 3.x来说,在请求中添加UserAgent的信息非常简单,代码如下:
可以在请求加上头信息,伪装成浏览器访问User-Agent,具体的信息可以通过火狐的FireBug插件查询  
headers = {\'User-Agent\':\'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0\'}  
req = request.Request(url=chaper_url, headers=headers)  
page  = request.urlopen(req).read() 
 
参考:https://www.cnblogs.com/lixiaolun/p/4773433.html 

以上是关于python3 raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 403的主要内容,如果未能解决你的问题,请参考以下文章

Python3基础 raise 产生RuntimeError 异常

Python2和Python3中raise Exception

Python3&selenium raise 消息:无法连接到服务 geckodriver

python3的raise有traceback这个参数吗?如果有的话怎么用?

python3 日志检索异常抛出异常 raise KeyError(key),KeyError: 'formatters'

python3.7.3使用web.py报错解决办法 and RuntimeError: generator raised StopIteration