python请求库之requests
一、简介
requests使用了urllib3的库,并且继承了所有urllib2的特性,最关键的是它不需要urllib3一样在编码时收到开启线程池,简单粗暴,它比 urllib 更加方便,可以节约大量的工作,完全满足 HTTP 测试需求。可以通过如下命令安装:
pip install requests
导包命令如下:
import requests
二、基本语法
1、get请求
常用参数:
示例:
import requests
resp = requests.get(url="http://www.baidu.com")
print(resp)
2、post请求
常用参数:
示例:
word = input("please input a word")
url = "https://fanyi.baidu.com/sug"
data = {
"kw": word,
}
headers = {
'User-Agent': "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 96.0.4664 .93 Safari / 537.36",
}
resp = requests.get(url=url, data=data, headers=headers)
print(resp.json())
注意:
- data 和 params 的区别是: data提交的数据并不放在url链接里, 而是放在url链接对应位置的地方作为数据来存储
- data 和 json 的作用类似,适用方法相同
- get 里面的参数大部分也适用
3、response
4、head
url = "http://www.baidu.com"
headers = {
'User-Agent': "Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 96.0.4664 .93 Safari / 537.36",
}
resp = requests.head(url=url)
print(resp.headers)
5、put
put请求的作用:更新资源
put 和 post 区别:
-
新建一条记录的话就用post
-
post方法被用于请求源服务器接受请求中的实体作为请求资源的一个新的从属物
-
更新一条记录的话就用put
-
put方法请求服务器去把请求里的实体存储在请求URI标识下
三、示例
1、文件上传
通过requests的POST请求我们知道requests可以模拟提交数据,例如文件上传:
import requests ##用open的方式打开文件,作为字典的值。file是请求规定的参数,每个请求都不一样。 files = {"file": open("C:\Users\lenovo\Desktop\de.txt","rb")} response = requests.post("http://httpbin.org/post", files=files)
2、获取cookie
(1)方式一
import requests res = requests.get('https://www.baidu.com/') cookies = res.cookies print(cookies)
(2)方式二
# 方式二 import requests # 定义方法 """AI is creating summary for """ def get_cookie(): response = requests.get('https://www.baidu.com/') print(response.cookies) return ''.join('{0}={1};'.format(key, value) for key, value in response.cookies.items()) # 调用方法 get_cookie()
3、爬取某个接口
import requests headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0'} cookies = requests.post('https://xueqiu.com/S/SH000001', headers=headers) cookies = cookies.cookies raw = requests.get('https://stock.xueqiu.com/v5/stock/quote.json?symbol=SH000001&extend=detail', timeout=5, cookies=cookies, headers=headers) print(raw.json())