urllib2.HTTPError: HTTP Error 403: Forbidden 解决方法
Posted 笑面浮屠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了urllib2.HTTPError: HTTP Error 403: Forbidden 解决方法相关的知识,希望对你有一定的参考价值。
参考:
- https://stackoverflow.com/questions/13303449/urllib2-httperror-http-error-403-forbidden
- https://segmentfault.com/q/1010000000470724
通过测试应该是request中header的问题。
1 class S0819MtimeTiantangPipeline(object): 2 def process_item(self, item, spider): 3 headers = { 4 "Host": \'img31.mtime.cn\', 5 "User-Agent": \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:53.0) Gecko/20100101 Firefox/53.0\', 6 "Accept": \'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\', 7 "Accept-Language": \'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3\', 8 "Accept-Encoding": \'gzip, deflate\', 9 "Connection": \'keep-alive\', 10 "Upgrade-Insecure-Requests": 1, 11 } 12 13 req = urllib2.Request(url=item[\'addr\'], headers=headers) 14 res = urllib2.urlopen(req) 15 16 file_name = os.path.join(os.path.curdir, "down_pic", item[\'name\'] + \'.jpg\') 17 with open(file_name, \'wb\') as fp: 18 fp.write(res.read())
下面是我怎么得到正确的header的方法:
1. 准备:
Firefox浏览器+HttpFox插件
2. 步骤
1. 打开HttpFox,然后将一个你要request的url输入到Firefox浏览框里,回车
例: http://img31.mtime.cn/pi/2014/02/28/042456.50965899_1000X1000.jpg
2. 如下图选取所需要的header
注:
1. 现在用requests抓取www.mtime.com图片又出现这个403问题了,有可能是被爬取的网站防采集程序给屏蔽了,现在还没找到方法,待处理。。。。
有人说缺少cookie或者是_xsrf,但是用FixeFox的httpfox抓出来的get信息里没有用到cookie和_xsrf呀(抓取时不需要登录)。
From: https://www.zhihu.com/question/29926060
Update:
应该是我的IP因为爬取同一个网站太快而被暂时屏蔽了。
这篇文章非常好: http://www.cnblogs.com/junrong624/p/5533655.html
Update:
每个网站请求时间隔delay 1s 后解决问题,这个.....降低了别人服务器的压力,延长了自己的工作时间^_^(快速采集是一种恶习 From:《Python 网络数据采集》).
其它优化时间方法:
1. 因为异步采集的有:
http://img21.mtime.cn
http://img31.mtime.cn
http://img5.mtime.cn
网址分别整理到三个列表里,每次请求一个列表里的一个网址,等只剩一个列表时在每个请求delay 1s.
2. 变换IP
以上是关于urllib2.HTTPError: HTTP Error 403: Forbidden 解决方法的主要内容,如果未能解决你的问题,请参考以下文章
python: urllib2.HTTPError: HTTP 错误 405: 方法不允许
urllib2.HTTPError: HTTP Error 403: Forbidden 解决方法
urllib2.HTTPError: HTTP Error 400: Bad Request
urllib2.HTTPError: HTTP Error 403: Forbidden 请高手指点,python菜鸟一枚
python urllib2导出elasticsearch数据时 返回 "urllib2.HTTPError: HTTP Error 500: Internal Server Error&q