今天开始学习《Python3 爬虫、数据清洗与可视化实战》这本书。2018年11月出版,也是几年前屯的书了。今天开始清仓!
python的requests库用途是什么?
Python的requests
库是一个非常流行且强大的HTTP库,用于发送所有类型的HTTP请求。它简化了与Web服务和API的交互,使得HTTP请求的发送和响应的处理变得非常直观和便捷。以下是requests
库的一些主要用途和功能:
1. 发送HTTP请求
requests
库可以发送各种类型的HTTP请求,例如GET、POST、PUT、DELETE、HEAD、OPTIONS等。
import requests
# 发送GET请求
response = requests.get('https://api.example.com/data')
print(response.text)
# 发送POST请求
response = requests.post('https://api.example.com/data', data={'key': 'value'})
print(response.text)
2. 处理响应
requests
库可以轻松处理HTTP响应,包括获取响应状态码、响应头、响应内容等。
response = requests.get('https://api.example.com/data')
# 获取响应状态码
print(response.status_code)
# 获取响应头
print(response.headers)
# 获取响应内容
print(response.text) # 或者 response.json() 如果响应内容是JSON格式
3. 传递参数
requests
库可以在请求中传递查询参数、表单数据、JSON数据等。
# GET请求传递查询参数
response = requests.get('https://api.example.com/data', params={'key1': 'value1', 'key2': 'value2'})
# POST请求传递表单数据
response = requests.post('https://api.example.com/data', data={'key': 'value'})
# POST请求传递JSON数据
response = requests.post('https://api.example.com/data', json={'key': 'value'})
4. 设置请求头
可以通过headers
参数设置自定义的请求头。
headers = {'User-Agent': 'my-app/0.0.1'}
response = requests.get('https://api.example.com/data', headers=headers)
5. 处理Cookies
可以轻松地处理HTTP cookies,保持会话。
# 发送请求并获取cookies
response = requests.get('https://api.example.com/login')
cookies = response.cookies
# 使用获取的cookies发送请求
response = requests.get('https://api.example.com/data', cookies=cookies)
6. 处理文件上传和下载
可以方便地处理文件上传和下载。
# 文件上传
files = {'file': open('report.csv', 'rb')}
response = requests.post('https://api.example.com/upload', files=files)
# 文件下载
response = requests.get('https://api.example.com/report.pdf')
with open('report.pdf', 'wb') as file:
file.write(response.content)
7. 超时和重试机制
可以设置请求的超时和重试机制,以应对网络延迟和暂时性故障。
# 设置超时时间
response = requests.get('https://api.example.com/data', timeout=5)
# 使用重试机制
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(total=3, backoff_factor=1, status_forcelist=[500, 502, 503, 504])
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
response = session.get('https://api.example.com/data')
8. 身份认证
支持各种身份认证方式,例如Basic Auth、OAuth等。
from requests.auth import HTTPBasicAuth
# Basic Auth
response = requests.get('https://api.example.com/data', auth=HTTPBasicAuth('username', 'password'))
总结
requests
库功能强大且易于使用,使得与Web服务和API的交互变得非常简单和直观。它在处理HTTP请求和响应时提供了丰富的功能和灵活性,是Python开发中处理网络请求的首选库。