【爬虫】requests请求方式、Response、Session

16 篇文章 4 订阅
14 篇文章 8 订阅
1.requests

该库可以发起http协议的请求,比python原生的urllib更加方便,所以经常会用在爬虫、测试等方向

1.1 安装
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple
1.2 请求方式

请求方式包括,get、post、put、patch、delete、options、header。使用的时候可以requests.方法名(),例如requests.get()发起GET请求。当然,也可以使用request()方法传入method参数确定请求方式

以下是发起get请求,其他请求方式一样

import requests

# 方法1:请求方式对应的方法名
req = requests.get(url="https://postman-echo.com/ip")

# 方法2:使用request()方法指定method参数
req = requests.request(method="get", url="https://postman-echo.com/ip")

print(req.content)  # 打印原始未解码数据(二进制)

1.3 常用的请求参数

requests.请求方式(url, **kwargs)

参数请求方式说明
url请求的url
paramsget字典,发起get请求,查询字符串参数,也可以直接在url后面用?号拼接
headers字典,请求头参数
cookies字典,指定发起请求携带的cookies
jsonpost字典,发起post请求,请求体是json格式
filespost字典,请求的文件
datapost字典,请求体,即表单数据
timeout超时时间,单位是秒
proxies字典,代理,键为http或https
  • get请求
import requests

# 请求url
url = 'https://postman-echo.com/get'

# 请求参数
params = {
    "name": "pan"
}

# 发起GET请求
req = requests.get(url=url, params=params)
print(req.text)

  • post请求
import requests
import json

url = "http://www.test.com/regist/"

# 表单数据
data = {
    "name": "pan",
    "password": "12345"
}

# json数据
json = json.dumps({'name': 'pan', 'password': '12345'})  # 将python对象转换成json数据

# 指定要上传的文件
files = {'file': open('C://test.txt', 'rb')}

# r = requests.post(url=url, json=data, files=files)  # 以json发送数据
r = requests.post(url=url, data=data, files=files)  # 以表单发送数据

  • headers请求
import requests

# 请求url
url = 'https://postman-echo.com/headers'

# 请求头
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0"
}

# 发起GET请求
req = requests.get(url=url, headers=headers)
print(req.text)

  • 携带cookies的get请求
import requests

# 请求url
url = 'https://postman-echo.com/cookies'

# 请求cookies
cookies = {
    "username": "pan"
}

# 发起GET请求
req = requests.get(url=url, cookies=cookies)
print(req.text)

2.Response

当我们成功发起请求之后应该会得到一个响应,我们再处理响应数据,该响应是一个Response类型

2.1 常用属性
属性说明
status_code响应码,200表示成功
text响应体解码数据,可能会出现乱码,可以手动更改
content响应体原始数据(二进制)
headers响应头
encoding网页编码
cookies服务器返回的cookies
request请求方式

import requests

url = "https://postman-echo.com/ip"
req = requests.get(url=url)

print("type:", type(req))
print("status_code", req.status_code)
print("encoding", req.encoding)
req.encoding = "utf-8"  # 如果内容出现乱码,可以手动指定正确的编码
print("headers", req.headers)
print("cookies ", req.cookies)
print(req.text)

2.2 Response.json()

如果返回值是json格式,我们完全可以直接使用json()方法将返回的字符串转换成python对象而不需要手动导入json库再转换

req = requests.get(url=url)

print(req.text)
print(type(req.text))

print(req.json())
print(type(req.json()))

"""
# 输出:
{"ip":"116.30.198.222"}
<class 'str'>
{'ip': '116.30.198.222'}
<class 'dict'>
"""

注意:如果返回的数据非json数据则会报错

3.requests.Session

因为http协议是无状态请求,所以会通过cookie与服务器验证身份。requests.get()等方法不会保持状态,但requests库提供了一个Session类,可以保持会话状态

import requests

url = 'http://127.0.0.1:8000/login/'

info = {
    "username":"mike123",
    "password":"12345",
    "remembered":True
}

session = requests.Session()
resp = session.post(url, json=info)
print(resp.json())

resp = session.get('http://127.0.0.1:8000/info/')
print(resp.json())
Python爬虫中,requests库是非常常用的一个库,它提供了简洁而强大的API来发送HTTP请求。对于使用requests库进行爬虫,以下是一些基本操作和高级用法的介绍: 基本操作: 1. 安装requests库:使用pip命令可以安装requests库,例如:`pip install requests`。 2. 导入requests库:在Python脚本中导入requests库,例如:`import requests`。 3. 发起GET请求:使用requests库的get方法可以发起GET请求,例如:`response = requests.get(url)`。 4. 发起POST请求:使用requests库的post方法可以发起POST请求,例如:`response = requests.post(url, data)`。 5. 响应内容:通过response对象可以获取请求的响应内容,例如:`response.text`返回响应内容的字符串形式。 高级用法: 1. 请求头部信息:可以通过headers参数来设置请求头部信息,例如:`headers = {"User-Agent": "Mozilla/5.0"}`,然后将headers作为参数传入GET或POST请求中。 2. 发送参数:可以通过params参数来发送请求参数,例如:`params = {"key": "value"}`,然后将params作为参数传入GET请求中。 3. 发送数据:可以通过data参数来发送POST请求的数据,例如:`data = {"key": "value"}`,然后将data作为参数传入POST请求中。 4. 文件上传:可以通过files参数来上传文件,例如:`files = {"file": open("filename", "rb")}`,然后将files作为参数传入POST请求中。 5. 超时设置:可以通过timeout参数来设置请求的超时时间,例如:`timeout = 5`,表示设置超时时间为5秒。 6. 会话管理:可以使用Session对象来管理会话,例如:`session = requests.Session()`,然后可以使用session对象发送多个请求,会话对象会自动保存和使用Cookies信息。 7. 重定向处理:可以通过allow_redirects参数来控制是否允许重定向,默认为True,可以设置为False来禁止重定向。 8. SSL验证:可以通过verify参数来控制SSL证书验证,默认为True,可以设置为False来禁止验证。 总结:以上是Python爬虫中使用requests库的一些基本操作和高级用法。你可以根据具体的需求来选择合适的方法和参数来发送HTTP请求,并获取响应内容。记得根据实际情况进行异常处理和错误判断,以保证爬虫的稳定性和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰冷的希望

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值