requests
库requests
库?Python的requests
库是一个用于发送HTTP请求的第三方库。它简单易用,封装了许多底层操作,能够帮助开发者更轻松地与Web服务进行通信。requests
库支持发送各种HTTP请求,比如GET、POST、PUT、DELETE等。
requests
库的特点urllib
相比,requests
更易于使用。requests
库在使用requests
之前,需要确保已安装该库。可以使用以下命令安装:
pip install requests
在了解requests
库的API之前,首先需要了解一些基本的HTTP概念,这有助于理解如何与Web服务交互。
requests
库的基本APIGET请求通常用于从服务器获取数据。它将参数附加在URL的查询字符串中。
语法:
import requests
response = requests.get(url, params=None, headers=None)
参数说明:
url
: 请求的URL地址。params
: (可选)字典或元组,附加在URL后的查询参数。headers
: (可选)字典,包含发送的请求头信息。示例:
response = requests.get('https://jsonplaceholder.typicode.com/posts', params={'userId': 1})
print(response.status_code) # 打印状态码
print(response.json()) # 以JSON格式输出响应内容
使用场景:
POST请求用于向服务器提交数据,比如提交表单或者上传文件。
语法:
response = requests.post(url, data=None, json=None, headers=None)
参数说明:
url
: 请求的URL地址。data
: (可选)字典或元组,表单数据将作为请求体发送。json
: (可选)字典或列表,JSON数据将作为请求体发送。headers
: (可选)字典,包含发送的请求头信息。示例:
payload = {'username': 'test', 'password': '123456'}
response = requests.post('https://httpbin.org/post', data=payload)
print(response.json()) # 以JSON格式输出响应内容
使用场景:
除了GET和POST请求,requests
库还支持其他HTTP方法。
PUT请求:
response = requests.put('https://jsonplaceholder.typicode.com/posts/1', data={'title': 'new title'})
print(response.status_code)
用于更新资源,通常与GET、POST结合使用。
DELETE请求:
response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)
用于删除资源。
HEAD请求:
response = requests.head('https://jsonplaceholder.typicode.com/posts/1')
print(response.headers)
类似GET,但只请求响应头而不下载响应体,通常用于检查链接是否可用。
使用requests
库发送请求后,会得到一个响应对象,可以从中提取有用的信息。
状态码用于指示请求的结果,常见的有200(成功)、404(未找到)、500(服务器错误)等。
response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code) # 输出状态码
响应的内容可以是HTML、JSON等格式,可以根据需要进行处理。
print(response.text) # 以文本形式输出内容
print(response.json()) # 以JSON格式输出内容
print(response.headers) # 输出响应头
requests
库提供了会话(Session)对象,可以跨请求保存某些参数,如Cookies。适用于需要连续多次请求并保持状态的场景。
示例:
session = requests.Session()
session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
response = session.get('https://httpbin.org/cookies')
print(response.json()) # 会返回已设置的cookie
默认情况下,requests
会验证SSL证书,可以通过参数verify
关闭此功能。
response = requests.get('https://expired.badssl.com/', verify=False)
print(response.status_code)
可以使用timeout
参数设置请求的超时时间,避免长时间等待。
response = requests.get('https://httpbin.org/delay/3', timeout=2) # 设置2秒超时
在数据采集和简单爬虫开发中,requests
库是获取网页内容的利器。
可以通过GET请求获取网页的HTML内容,然后使用解析库如BeautifulSoup
提取信息。
response = requests.get('https://example.com')
html_content = response.text
很多网站的数据交互是通过POST请求进行的,requests
库可以帮助我们模拟表单提交。
payload = {'username': 'user', 'password': 'pass'}
response = requests.post('https://example.com/login', data=payload)
有些网站使用Cookies保存会话信息,requests
库可以方便地管理和发送Cookies。
session = requests.Session()
session.get('https://example.com/login')
response = session.get('https://example.com/profile')
在抓取多个页面的数据时,常需要处理分页,可以通过循环发送GET请求来实现。
for i in range(1, 6): # 假设有5页数据
response = requests.get(f'https://example.com/data?page={i}')
print(response.json())
requests
库简化了HTTP请求的发送和处理。