requests是python实现的简单易用的HTTP库,使用起来比urllib简洁很多
因为是第三方库,所以使用前需要cmd安装
1
|
pip install requests |
安装完成后import一下,正常则说明可以开始使用了。
基本用法:
requests.get()用于请求目标网站,类型是一个HTTPresponse类型
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import requests response = requests.get( 'http://www.baidu.com' ) print (response.status_code) # 打印状态码 print (response.url) # 打印请求url print (response.headers) # 打印头信息 print (response.cookies) # 打印cookie信息print(response.text) #以文本形式打印网页源码 print (response.content) #以字节流形式打印 |
运行结果:
状态码:200
各种请求方式:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
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' ) requests.head( 'http://httpbin.org/get' ) requests.options( 'http://httpbin.org/get' ) |
基本的get请求
1
2
|
import requests response = requests.get( 'http://httpbin.org/get' ) print (response.text) |
带参数的GET请求:
第一种直接将参数放在url内
1
2
3
|
import requests response = requests.get(http: //httpbin.org/get?name=gemey&age=22)print(response.text) |
解析json
1
2
3
4
5
6
7
8
9
|
import requests response = requests.get( 'http://httpbin.org/get' ) print (response.text) print (response.json()) #response.json()方法同json.loads(response.text) print ( type (response.json())) |
案例之一:
1
2
3
4
5
6
7
8
9
10
11
|
import requests URL = 'http://ip.taobao.com/service/getIpInfo.php' # 淘宝IP地址库API try : r = requests.get(URL, params = { 'ip' : '8.8.8.8' }, timeout = 1 ) r.raise_for_status() # 如果响应状态码不是 200,就主动抛出异常 except requests.RequestException as e: print (e) else : result = r.json() print ( type (result), result, sep = '\n' ) |
使用 Requests 模块,上传文件也是如此简单的,文件的类型会自动进行处理:
1
2
3
4
5
6
7
8
|
import requests url = 'http://127.0.0.1:5000/upload' files = { 'file' : open ( '/home/lyb/sjzl.mpg' , 'rb' )} #files = {'file': ('report.jpg', open('/home/lyb/sjzl.mpg', 'rb'))} #显式的设置文件名 r = requests.post(url, files = files) print (r.text) |
1
2
3
4
5
6
7
|
import requests url = 'http://127.0.0.1:5000/upload' files = { 'file' : ( 'test.txt' , b 'Hello Requests.' )} #必需显式的设置文件名 r = requests.post(url, files = files) print (r.text) |