Request简介
Request是一个简答优雅的python HTTP库,相较于python标准库中的urllib和urllib2的库,Requests更加的便于理解使用,Request的优点可以参照这篇博客
Request的安装
python Requests的安装可以通过pip包管理器来进行
$ pip install requests
当然也可以进行源码编译,从github上克隆或者下载压缩包都行
$ git clone git://github.com/kennethreitz/requests.git
或者
$ curl -OL https://github.com/kennethreitz/requests/tarball/master
又或者
$ curl -OL https://github.com/kennethreitz/requests/zipball/master
解压之后运行
$ python setup.py install
Requsets基本使用
一、生成一个网络请求
使用Requests之前,先导入该模块
import requests
先来一个最简单的例子,像服务器发送一个GET
请求
r = requests.get('http://www.baidui.com')
现在你拥有了一个名叫r的Respone
对象,通过这对象,你可以获取网络应答的所有信息,例如通过r的text属性就能获取到网页内容。
Request一个优秀的特性是能够让你显示的知道你在发送什么样的请求,上边我们在发送一个GET
请求,我们可以像下边的例子一样很清楚的发送POST,EDLETE, PUT
等请求
r = requests.post("http://example.com", data={"key": "value"})
r = requests.put("http://example.com")
在请求代码上你都能很清楚的知道自己在做什么样的网络请求。是不是很人性。
二、用URLs传递参数
有些时候你需要在URLs中传递键/值对给服务器端,在urllib或urllib2中你需要将参数使用urllib.encode
进行转码后附加到原URL上,而在Requests中,你可以直接将参数以字典形式传递到函数中,方便快捷
三、获取Response对象中的内容
Requests会将获取到的网络应答自动解码,大多数的unicode编码能被正确的解码
>>> r = requests.get('http://www.baidu.com')
>>> r.encoding
'utf-8'
当你需要特殊编码的时候你可以设置r.encoding
的值来满足特定需求。而且Requests还会自动帮你解码gzip
等压缩文件。Requests还可以帮你解码json文件,请看下边例子
四、定制HTTP Headers
HTTP Headers是HTTP请求和相应的核心,它承载了关于客户端浏览器,请求页面,服务器等相关的信息。在网络蜘蛛访问一些网站的时候需要提供这些信息来伪装成浏览器,Requests能够方便明了的帮你完成这项任务,你所有的Headers都可以以字典形式作为参数传递给请求函数。
url = 'http://www.example.com'
headers = {'user-agent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36'}
r = requests.get(url,headers=headers)
五、复杂的POST请求
通常情况下,如果你只是想要传递简单的form表单数据给服务器的话,直接传递一个字典给requests.post
方法即可,requests.post
会自动帮你把数据转换成标准格式传递给服务器。