目录
安装requests包:pip install requests
1. requests支持的请求
requests.get(url, params=None, **kwargs)
:数据获取请求requests.post(url, data=None, json=None, **kwargs))
:数据保存请求requests.head(url, **kwargs)
:获取指定响应头数据requests.patch(url, data=None, **kwargs)
:局部更新数据requests.put(url, data=None, **kwargs)
:更新数据requests.patch(url, data=None, **kwargs)
:删除数据请求requests.options(url, **kwargs)
:获取服务端资源的支持情况
2. requests请求参数
url
:要请求的url,协议+域名+路径params
:url中的参数,字典类型,会被拼接到url后面data
:请求体中的参数,字段类型json
:请求体中的参数,字典类型**kwargs
:可选参数,包括:headers
、cookies
、files
、auth
、timeout
、allow_redirects
、proxies
、verify
、stream
、cert
。headers
:请求头中的参数,字典类型cookies
:请求头中的cookies,字典类型files
:请求的文件,指定格式的字典auth
:请求头中的用户认证信息,字典类型timeout
:请求超时时间。单位:秒allow_redirects
:重定向设置proxies
:代理设置verify
:SSL证书设置stream
:下载大的文件的时候使用
3. reqeusts响应内容
r.text
:通过文本的形式获取响应内容r.encoding
:获取响应内容的编码r.content
:获取二进制类型内容r.json()
:获取JSON响应内容r.raw
:获取原始响应内容r.status_code
:获取响应状态码r.headers
:获取响应头
案例:
案例一:获取豆瓣某一页面的数据
import requests
def get_page(page):
url = 'https://movie.douban.com/j/new_search_subjects'
data = {
"sort": "U",
"range": "0\,10",
"tags": "f",
"start": page
}
header = {
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="99", "Google Chrome";v="99"',
'Accept': 'application/json, text/plain, */*',
'sec-ch-ua-mobile': '?0',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36',
'sec-ch-ua-platform': '"macOS"',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://movie.douban.com/tag/',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cookie': 'bid=gtpRtyyqHX8; douban-fav-remind=1; ll="118281"; __utmv=30149280.20937; __gads=ID=a147848eb050f99c-220e989daad00018:T=1633158638:RT=1645076404:S=ALNI_MaSzPYjUV2oS8f1xhVi6Cpfq4DLMQ; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1649597597%2C%22https%3A%2F%2Fwww.douban.com%2F%22%5D; __utma=30149280.1988316604.1633158640.1645076404.1649597597.8; __utmc=30149280; __utmz=30149280.1649597597.8.8.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; __utma=223695111.1631674592.1649597597.1649597597.1649597597.1; __utmc=223695111; __utmz=223695111.1649597597.1.1.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; _vwo_uuid_v2=D16D7432A4D9A3AE7F640C9F5C24E4D3F|3fcd57d379e799356d9c77c5793493de; ct=y; _pk_id.100001.4cf6=776c2412cafc6b17.1649597597.1.1649597668.1649597597.'
}
res = requests.get(url=url,data=data, headers=header)
return res.json()
a = get_page("20")
f = open('result.json', 'a')
f.write(str(a))
f.close()
案例二:循环获取接口数据并写入到Excel中
import requests
def get_page(page):
url = 'https://xxx.xxxxx.com/xxxxxx/users/customers?page_no=' + page + '&page_size=20'
header = {
'authorization': 'Bearer XXXXXX'
}
res = requests.get(url=url, headers=header)
return res.json()
import openpyxl
wbname = "/Users/mymac/Desktop/Projects/PythonCode/Excel操作/用户数据.xlsx"
print("写入Excel[%s]中......." %(wbname))
wb = openpyxl.Workbook()
sheet = wb.create_sheet("Sheet1")
sheet.append(["店铺","等级", "手机号", "昵称", "积分"])
i = 1
while i <= 100:
a = get_page(str(i))
list_data = a["data"]["list"]
print(list_data)
for row in list_data:
data_a = [
row["buy_shop"],
row["level_name"],
row["mobile"],
row["nick_name"],
row['point'],
]
sheet.append(data_a)
i+=1
wb.save(filename=wbname)
print("写入成功!")
案例三:上传文件
import requests
url = "http://XXX.com/upfile"
files= {
"files":open("test.jpg","rb")}
response = requests.post(url,files=files)
print(response.text)