相对于urllib,urllib2两个网络模块,Python提供了requests这个更为简单的模块.
由于requests是第三方模块,使用之前需要先安装。
官方文档:
http://cn.python-requests.org/zh_CN/latest/user/quickstart.html
简单使用:
导入:import requests
发送请求得到网页:
r=requests.get("http://blog.csdn.net/james_shu")
r=requests.post("http://blog.csdn.net/james_shu")
r=requests.put("http://blog.csdn.net/james_shu")
r=requests.head("http://blog.csdn.net/james_shu")
r=requests.options("http://blog.csdn.net/james_shu")
发送带参数的get请求,将key与value放入一个字典中,通过params参数来传递,其作用相当于urllib.urlencode:
>>> import requests
>>> pyload={'name':'王福运'}
>>> r=requests.get("http://blog.csdn.net/james_shu",params=pyload)
>>> print r.url
http://blog.csdn.net/james_shu?name=%CD%F5%B8%A3%D4%CB
得到请求的结果:
>>> r.text
u'<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor="white">\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n'
#得到页面的内容
>>> r.content
'<html>\r\n<head><title>403 Forbidden</title></head>\r\n<body bgcolor="white">\r\n<center><h1>403 Forbidden</h1></center>\r\n<hr><center>nginx</center>\r\n</body>\r\n</html>\r\n'
#得到响应的状态码
>>> r.status_code
403
#得到响应的字符编码
>>> r.encoding
'utf-8'
发送带有参数的post请求,post请求要通过data来传递参数
>>> r=requests.post("http://blog.csdn.net/james_shu",data=payload)
>>> print r.text
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
发送文件的post类型,这个相当于向网站上传一张图片,文档等操作,这时要使用files参数
>>> url = 'http://httpbin.org/post'
>>> files = {'file': open('touxiang.png', 'rb')}
>>> r = requests.post(url, files=files)
定制headers,使用headers参数来传递
>>> import json
>>> url = 'https://api.github.com/some/endpoint'
>>> payload = {'some': 'data'}
>>> headers = {'content-type': 'application/json'}
>>> r = requests.post(url, data=json.dumps(payload), headers=headers)
获取响应中的Cookies信息:
>>> r = requests.get('http://www.baidu.com')
>>> r.cookies['BAIDUID']
'D5810267346AEFB0F25CB0D6D0E043E6:FG=1'
自定义Cookies:
>>> url = 'http://httpbin.org/cookies'
>>> cookies = {'cookies_are':'working'}
>>> r = requests.get(url,cookies = cookies)
>>>
>>> print r.text
{
"cookies": {
"cookies_are": "working"
}
}
使用timeout参数设置超时时间
>>> requests.get('http://github.com', timeout=1)
<Response [200]>
如果将时间设置成非常小的数,如requests.get(‘http://github.com‘, timeout=0.001),那么如果在timeout的时间内没有连接,那么将会抛出一个Timeout的异常
访问中使用session
先初始化一个session对象,s = requests.Session()
然后使用这个session对象来进行访问,r = s.post(url,data = user)