关于报urllib2.HTTPError: HTTP Error 401: Unauthorized错误问题
来源:互联网 发布:关于棉花糖网络语 编辑:程序博客网 时间:2024/06/10 19:28
Traceback (most recent call last):
File "<pyshell#18>", line 1, in <module>
callInfo = server.methods['getTemp']
File "SOAPpy\Client.py", line 472, in __call__
return self.__r_call(*args, **kw)
File "SOAPpy\Client.py", line 494, in __r_call
self.__hd, self.__ma)
File "SOAPpy\Client.py", line 365, in __call
config = self.config)
File "SOAPpy\Client.py", line 265, in call
raise HTTPError(code, msg)
HTTPError: <HTTPError 401 Unauthorized>
401意思就是未认证, 需要你登陆, 这个网站只是利用了401状态码, 并没有真的做Basic/Digest认证, 页面还是随之返回的, 不过文章内容被截断了, 页面里也有说明, 抓取法如下:
#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import urllib2
import zlib
headers = {
"User-Agent":"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6",
}
try:
req = urllib2.Request("http://www.nature.com/onc/journal/v29/n35/full/onc2010241a.html", headers = headers)
res = urllib2.urlopen(req)
except urllib2.HTTPError as http_error:
print zlib.decompress(http_error.read(), 30)
先浏览器访问了一下这个网址, 发现401错误但页面正常显示, 看Response header发现没有401相关的tag, 但content里是有页面的.
所以, 就有了上面的代码, 也就是你可以看到你贴的错误是HttpError异常, 去Python manual里翻一翻urlib2的帮助, 就可以找到这个异常以及谁抛出此异常, 前提是你先要明白urllib2的handler回调机制, 每个注册的handler都继承base handler, 并且拥有所有回调接口(可能没有覆写, 也就是不作用), 你可以很快的阅读发现随着httperror异常抛出的对象拥有urlopen返回值一样的接口, 也就是read, 用它就可以读取content了.
至于zlib就是解压gzip格式数据, 你可以manual看zlib相关内容(我是做C的, zlib用的多), 之所以要解压是因为我注意到response header里说明了编码方式为gzip, 而更健壮的程序应该是捕获异常后判断http_error对象里的header字典内的content-encoding字段是什么格式.
- 关于报urllib2.HTTPError: HTTP Error 401: Unauthorized错误问题
- urllib2.HTTPError: HTTP Error 403: Forbidden 错误
- urllib2.HTTPError: HTTP Error 403: Forbidden
- urllib2.HTTPError: HTTP Error 403: Forbidden
- urllib2.HTTPError: HTTP Error 403: Forbidden
- urllib2.HTTPError: HTTP Error 504: Fiddler
- python网络请求报urllib2.HTTPError: HTTP Error 405: Not Allowed
- Python网页爬虫提示urllib2.HTTPError: HTTP Error 403: Forbidden 错误
- Python网页爬虫提示urllib2.HTTPError: HTTP Error 403: Forbidden 错误
- urllib2中碰到HTTPError: HTTP Error 403: Forbidden的解决方案
- urllib2.HTTPError: HTTP Error 405(Method Not Allowed)
- Python urllib2.HTTPError: HTTP Error 304: Not Modified
- urllib2.HTTPError: HTTP Error 403: Forbidden的解决方案
- urllib2请求csdn时,显示: urllib2.HTTPError: HTTP Error 403: Forbidden
- http报错之return error code:401 unauthorized
- http报错之return error code:401 unauthorized
- HTTP Error 401.2 - Unauthorized iis7 错误
- HTTP 401 Unauthorized错误--路由器页面获取
- ora-01659 无法分配超出3的MINEXTENTS
- 【仿微盟源码】利用第三方微信营销托管平台快速增加粉丝,形成良好互动,打造精美微信APP。
- PAT A 1006. Sign In and Sign Out (25)
- 移动硬盘文件损坏怎么恢复
- BISS001使用
- 关于报urllib2.HTTPError: HTTP Error 401: Unauthorized错误问题
- git 回滚版本
- 8583报文详细分析
- 你不二之选的Java培训机构
- JS弹出居中的DIV
- iPhone 6年代iWatch热销缘由:可穿戴更有招引力
- MFC-三角形面积和周长
- OpenCV中文网站例程——鼠标绘图,图像修复
- 蚁群算法