企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## urllib [python2.7模块文档][1] 该模块提供了用于获取万维网(the World Wide Web)数据的高层接口。该模块在python3中有改变。 ### urlopen urllib.urlopen(url[, data[, proxies]]) 打开URL所表示的网络上的对象。它会使用socket连接网络上的某个服务器。 如果连接失败,会抛出**IOError**异常。如果一切顺利,返回一个file-like对象。该对象拥有以下方法: `read(),readline(),readlines(),fileno(),close(),info(),getcode() 和geturl()`,同时也支持iterator。 >[info] geturl()函数返回网页的真实URL。geturl()函数用于获得重定向后的URL。 ### urlretrieve urllib.urlretrieve(url[, filename[, reporthook[, data]]]) 如果需要,将由URL表示的网络对象复制到本地文件。如果URL指向本地文件,或存在对象的有效缓存副本,则不会复制对象。返回一个元组(filename, 头)其中filename是可以找到对象的本地文件名,头是返回的urlopen()返回的对象的`info()`方法。 ### urlencode urllib.urlencode(query[, doseq]) 将需要传入的参数进行编码 ### unquote ~~~ >>> from urllib import unquote >>> unquote('%C4%A7%CA%DE') '\xc4\xa7\xca\xde' >>> print unquote('%C4%A7%CA%DE') 魔兽 ~~~ --- ## urllib2 [python2.7模块文档][2] ### urlopen urllib2.urlopen(url[, data][, timeout]) 打开 URL url, url参数可以是一个字符串,也可以是一个 Request 对象. >[danger] HTTPS 请求不会做任何验证服务器证书的动作. 这个方法返回一个类文件对象,并带有三个附加方法。 >[info] geturl() — 返回所获取资源的URL, 通常用于决定是否跟着一个重定向 info() — 返回页面的元信息,例如头部信息,信息以 mimetools.表单的形式显现。信息例子 (请看 HTTP头快速参考) getcode() — 返回响应的HTTP状态码. 当错误时引发 **URLError** ### Request urllib2.Request(url[, data][, headers]) >[info] data 可以是字符串,不在需要使用urlencode转化 headers 为字典形式 ### URLError urllib2.URLError url地址问题引起的Error ### HTTPError urllib2.HTTPError 比如没有权限访问指定的资源 ### 使用cookie ``` # 生成cookie容器 cookie = cookielib.CookieJar() # cookie处理器 handler = urllib2.HTTPCookieProcessor(cookie) # 生成opner,有方法opener.open self.opener = urllib2.build_opener(handler) try: request = urllib2.Request(url=url, headers=headers) response = opener.open(request) return response.read() except urllib2.URLError, e: if hasattr(e, 'reason'): print "连接服务器失败, 错误原因", e.reason return None ``` ### httpd基本的帐号认证 ~~~ def login(): auth_handler = urllib2.HTTPBasicAuthHandler() auth_handler.add_password(realm='Secrete Aera', uri=remote_host, user='jenkins', passwd='jenkins') opener = urllib2.build_opener(auth_handler) # ...and install it globally so it can be used with urlopen. urllib2.install_opener(opener) ~~~ ## [测试例子][3] [1]:http://python.usyiyi.cn/translate/python_278/library/urllib.html#module-urllib [2]:http://python.usyiyi.cn/translate/python_278/library/urllib2.html#module-urllib2 [3]:https://www.cnblogs.com/poerli/p/6429673.html