概述
requests是python中热门的模块,它封装了python底层的库,并且更加容易使用。在python爬虫中非常常见的使用这个框架作为其请求的发送,这里记录其部分常见用法。
requests
安装
简单使用
POST请求
1 2 3 4 5
| data={ "xx":"yy", "aa":"bb" } r = requests.post("http://www.posturl.com",data=data)
|
json
1 2
| json="{'type':'post','age':123}" r = requests.post(url,data=json)
|
GET
1 2 3 4
| headers={ "user-agent":'xxxx', } r=requests.get(url,headers=headers)
|
高级使用
有时候某些场景会出现SSL错误,我们需要禁用
1 2 3 4
| from urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning)
requests.api.request('post', url, data={'bar':'baz'}, json=None, verify=False)
|
我们需要session来保持网站的连接
1 2
| session = requests.session() response = session.get(url)
|
上传文件模拟
1 2 3 4 5
| >>> url = 'http://httpbin.org/post' >>> files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
>>> r = requests.post(url, files=files) >>> r.text
|
response.text 和 response.content
1 2
| text是正常的字符流 content是二进制的字节流,常用于图片的传输
|
例子
结合unittest做API测试框架
1 2
| pip install html-testRunner pip install requests
|
代码
1 2 3 4 5 6 7 8 9 10 11
| import HtmlTestRunner import unittest import requests class TestPyRequest(unittest.TestCase): def setUp(self): self.url = 'https://api.douban.com' def test_douban_api(self): r = requests.get(self.url+'/v2/movie/top250',verify=False) self.assertTrue(r.status_code,200) if __name__ == '__main__': unittest.main(testRunner=HtmlTestRunner.HTMLTestRunner(output='.'))
|
以上我们就完成了一个以requests发送请求,以html-testRunner生成report,unittest作为验证断言的api框架,(以上代码只为简略的演示。)
reference
http://docs.python-requests.org/zh_CN/latest/