美文网首页
浅谈python urllib2

浅谈python urllib2

作者: 是归人不是过客 | 来源:发表于2018-07-19 16:17 被阅读5次

1,获取 URLs

实例:

    import urllib2 

    req =urllib2.Request('http://www.pythontab.com') 

    response =urllib2.urlopen(req) 

    the_page =response.read()

解释:

HTTP是基于请求和应答机制的--客户端提出请求,服务端提供应答。urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。

2,data数据

并不是所有的POSTs都来源于表单,你能够使用POST提交任意的数据到你自己的程序。一般的HTML表单,data需要编码成标准形式。然后做为data参数传到Request对象。编码工作使用urllib的函数而非urllib2。

importurllib 

importurllib2 

url ='http://www.pythontab.com'

values ={'name': 'Michael Foord', 

          'location': 'pythontab', 

          'language': 'Python'} 

data =urllib.urlencode(values) 

req =urllib2.Request(url, data) 

response =urllib2.urlopen(req) 

the_page =response.read()

3,Headers

我们将在这里讨论特定的HTTP头,来说明怎样添加headers到你的HTTP请求。有一些站点不喜欢被程序(非人为访问)访问,或者发送不同版本的内容到不同的浏览器。默认的urllib2把自己作为“Python-urllib/x.y”(x和y是Python主版本和次版本号,例如Python-urllib/2.5),这个身份可能会让站点迷惑,或者干脆不工作。浏览器确认自己身份是通过User-Agent头,当你创建了一个请求对象,你可以给他一个包含头数据的字典。下面的例子发送跟上面一样的内容,但把自身模拟成Internet Explorer。

importurllib 

importurllib2 

url ='http://www.pythontab.com'

user_agent ='Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

values ={'name': 'Michael Foord', 

          'location': 'pythontab', 

          'language': 'Python'} 

headers ={ 'User-Agent': user_agent } 

data =urllib.urlencode(values) 

req =urllib2.Request(url, data, headers) 

response =urllib2.urlopen(req) 

the_page =response.read()

4,Handle Exceptions处理异常

当urlopen不能够处理一个response时,产生urlError(不过通常的Python APIs异常如ValueError,TypeError等也会同时产生)。

HTTPError是urlError的子类,通常在特定HTTP URLs中产生。

5,HTTPError

服务器上每一个HTTP 应答对象response包含一个数字"状态码"。有时状态码指出服务器无法完成请求。默认的处理器会为你处理一部分这种应答(例如:假如response是一个"重定向",需要客户端从别的地址获取文档,urllib2将为你处理)。其他不能处理的,urlopen会产生一个HTTPError。典型的错误包含"404"(页面无法找到),"403"(请求禁止),和"401"(带验证请求)。

请看RFC 2616 第十节有所有的HTTP错误码

HTTPError实例产生后会有一个整型'code'属性,是服务器发送的相关错误号。

相关文章

网友评论

      本文标题:浅谈python urllib2

      本文链接:https://www.haomeiwen.com/subject/frnzpftx.html