什么是Requests
Requests是Python语言编写,基于urllib3,采用Apache2 Licensed开源协议的HTTP库。它比urllib更加方便,可以节约我们大量的工作,完全满足HTTP测试需求。是Python实现的简单易用的HTTP库。
安装也很简单:
pip3进行安装
Request的语法操作
1.实例引入
1 2 3 4 5 6 7 8 9 10 11 12
| $ 1import requests $ response = requests.get( http://www.baidu.com/ ) $ print(response.status_code) $ print(type(response.text)) $ print(response.text) $ print(response.cookies) $ $ 200 $ <class str > $ $ $ <RequestsCookieJar[]>"
|
2.各种请求方式
1 2 3 4 5 6
| $ import requests $ $ requests.get( http://httpbin.org/get ) $ requests.post( http://httpbin.org/post ) $ requests.put( http://httpbin.org/put ) $ requests.delete( http://httpbin.org/delete )
|
请求
1.基本GET请求
1 2 3 4
| $ import requests $ $ resp = requests.get( http://httpbin.org/get ) $ print(resp.text)
|
2.带参数的GET请求这个我们前面有使用过,也是最常用的方法。运行成功就可以看到网页的源码了
1 2 3 4 5 6 7 8
| $ import requests $ $ data = { $ name : jack , $ age : 20 $ } $ resp = requests.get( http://httpbin.org/get , params=data) $ print(resp.text)
|
3.解析json传入参数只需要我们把数据生成一个字典,然后调用params参数,赋值给他就可以,是不是很方便。
1 2 3 4 5 6 7 8
| $ import requests $ import json $ $ resp = requests.get( http://httpbin.org/get ) $ print(resp.text) $ print(resp.json()) $ print(json.loads(resp.text)) $ print(type(resp.json()))
|
可以看出Requests的jaon解析和json的loads方法解析出来的结果是完全一样的。所以Requests可以很方便的解析json数据。
4.获取二进制数据
1 2 3 4 5 6 7 8
| $ import requests $ $ resp = requests.get( http://www.baidu.com/img/baidu_jgylogo3.gif ) $ print(resp.content) $ print(resp.text) $ $ with open( logo.gif , wb ) as f: $ f.write(resp.content)
|
运行成功我们可以看到content方法获取的图片页面源码是二进制数据,而text获取的则是字符串代码。显然获取图片这种二进制数据需要使用content方法。这样我们就保存了图片,我们可以在文件夹下看到这张图片。
1 2 3 4 5
| $ import requests $ $ headers = { User-Agent : Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 } $ resp = requests.get( http://www.baidu.com , headers=headers) $ print(resp.text)
|
有些网页如果我们直接去请求的话,他会查看请求的对象是不是浏览器,如果没有浏览器信息就会禁止我们爬虫的访问,这个时候我们就要给爬虫加一个headers,加一个浏览器的user-agent信息。这样我们就可以正常访问了。如果有的伙伴不知道怎么得到User-Agent,可以打开浏览器的审查元素,找到network,随便点击一个链接就可以看到User-Agent的信息了。
6.基本POST请求
1 2 3 4 5 6 7 8
| $ import requests $ $ data = { $ name : jack , $ age : 20 $ } $ resp = requests.post( http://httpbin.org/post , data=data) $ print(resp.text)
|
一个POST必然是要有一个Form Data的表单提交的,我们只要把信息传给data参数就可以了。一个POST请求只需要调用post方法,是不是特别方便呢。如果不觉得方便的话,可以去参考urllib的使用方法。
响应
1.response属性
1 2 3 4 5 6 7 8 9
| $ import requests $ $ response = requests.get( http://www.baidu.com/ ) $ print(type(response.status_code)) $ print(type(response.text)) $ print(type(response.headers)) $ print(type(response.cookies)) $ print(type(response.url)) $ print(type(response.history))
|
2.状态码判断获取这些信息只需要简单的调用就可以实现了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| $ import requests $ $ response = requests.get( http://www.baidu.com/ ) $ exit() if not resp.status_code == 200 else print( Sucessful ) $ Sucessful $ $ $ $ bad_r = requests.get( http://httpbin.org/status/404 ) $ bad_r.status_code $ 404 $ $ bad_r.raise_for_status() $ Traceback (most recent call last): $ File "requests/models.py", line 832, in raise_for_status $ raise http_error $ requests.exceptions.HTTPError: 404 Client Error
|
好了,这篇文章我们了解了Requests库的基本语法操作,相信大家对Requests库的请求和响应已经很清楚了,大家完全可以抓取一些网页了。
推荐阅读
https://blog.csdn.net/qq_28168421/article/details/89530073