requests库的简介
Requests是Python一个很实用的HTTP客户端,完全满足如今网络爬虫的需求。
requests是第三方库,需要安装才能使用
requests库的安装
pip命令安装
pip install requests
除此之外,还可以选择下载zip源码
解压至Python安装目录,
并且,Python目录下通过cmd运行命令行,输入以下命令,完成安装。
python setup.py install
requests库常用的方法
requests.request(url) 构造一个请求,支持以下各种方法
requests.get() 发送get请求
requests.post() 发送post请求
requests.head() 获取HTML的头部信息
requests.put() 发送put请求
requests.patch() 提交局部修改的请求
requests.delete() 提交删除请求
最常用的方法为get和post
response对象的常用属性
response.status_code 响应状态码
response.content 把response对象转换为二进制数据
response.text 把response对象转换为字符串数据
response.encoding 定义response对象的编码
response.cookies 获取请求后的cookie
response.url 获取请求网址
response.json() 内置的JSON解码器
response.headers 以字典对象存储服务器响应头,字典键不区分大小写
requests不带参数的get请求
百度首页:www.baidu.com/
#发送不带参数的get请求
import requests
url = 'https://www.baidu.com/'
resp = requests.get(url)
#设置响应的编码格式
resp.encoding = 'utf-8'
cookies = resp.cookies
headers = resp.headers;
print('响应状态码', resp.status_code)
print('请求后的cookie', cookies)
print('获取请求的网址', resp.url)
print('响应头', headers)
print('响应内容', resp.text)
requests带请求参数的get请求
360搜索:www.so.com/s?q=python
# https://www.so.com/s?q=python
import requests
url = 'https://www.so.com/s'
params = {'q': 'python'}
resp = requests.get(url, params=params)
resp.encoding = 'utf-8'
print(resp.text)
获取JSON数据,获取二进制数据
import requests
url = 'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=9115130383546662963&ipn=rj&ct=201326592&is=&fp=result&fr=&word=%E7%BE%8E%E5%A5%B3&cg=girl&queryWord=%E7%BE%8E%E5%A5%B3&cl=2&lm=-1&ie=utf-8&oe=utf-8&adpicid=&st=-1&z=&ic=0&hd=&latest=©right=&s=&se=&tab=&width=&height=&face=0&istype=2&qc=&nc=1&expermode=&nojc=&isAsync=&pn=30&rn=30&gsm=1e&1650956477690='
resp = requests.get(url)
json_data = resp.json()
print(json_data)
import requests
url = 'https://www.baidu.com/img/flexible/logo/pc/result.png'
resp=requests.get(url)
#存储
with open('logo.png', 'wb') as file:
file.write(resp.content)
使用requests发送post请求
import requests
url = 'https://juejin.cn/passport/web/user/login/?account_sdk_source=web'
data = {
'username': 'admin',
'password': '@Test123$%^',
'captcha': '1',
'key': '1650535293946'
}
resp = requests.post(url,data=data)
resp.encoding = 'utf-8'
print(resp.status_code)
print(resp.text)
使用requests的session发送请求
import requests
url = 'https://juejin.cn/passport/web/user/login/?account_sdk_source=web'
data = {
'username': 'admin',
'password': '@Test123$%^',
'captcha': '1',
'key': '1650535293946'
}
#使用session发送请求
session = requests.session()
resp = session.post(url, data=data)
resp.encoding = 'utf-8'
print(resp.text)