十六:Python学习笔记-- 爬虫(2)requests 模块详解
目录
安装 requests 模块
基本请求方法
GET 请求
POST 请求
PUT 请求
DELETE 请求
添加请求头:
处理查询参数:
文件上传:
常见响应状态码
访问超时
查询 Cookies
设置 Cookies
设置爬虫代理
小试牛刀
安装 requests
模块
你可以使用 pip
来安装 requests
。在终端或命令提示符中输入以下命令:
pip install requests
基本请求方法
requests
模块支持多种 HTTP 请求方法,以下是常用的几种:
GET 请求
用于从服务器获取数据。
import requests
response = requests.get('https://zbr/data')
print(response.status_code) # 状态码
print(response.json()) # 返回的 JSON 数据
POST 请求
用于向服务器发送数据。
import requests
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://zbr/data', json=data)
print(response.status_code)
print(response.json())
PUT 请求
用于更新资源。
import requests
data = {'key1': 'new_value'}
response = requests.put('https://zbr/data/1', json=data)
print(response.status_code)
DELETE 请求
用于删除资源。
import requests
response = requests.delete('https://zbr/data/1')
print(response.status_code)
添加请求头:
headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://zbr/data', headers=headers)
处理查询参数:
params = {'param1': 'value1', 'param2': 'value2'}
response = requests.get('https://zbr/data', params=params)
文件上传:
files = {'file': open('test.txt', 'rb')}
response = requests.post('https:/zbr/upload', files=files)
常见响应状态码
-
200 OK
- 请求成功,服务器返回所请求的数据。
-
201 Created
- 请求成功,资源被创建,通常用于 POST 请求。
-
204 No Content
- 请求成功,但没有返回内容,常用于 DELETE 请求。
-
400 Bad Request
- 服务器无法理解请求,通常是因为请求参数错误。
-
401 Unauthorized
- 请求需要用户验证,通常是因为缺少或无效的认证凭据。
-
403 Forbidden
- 服务器拒绝请求,即使已验证用户,通常是权限问题。
-
404 Not Found
- 请求的资源在服务器上未找到,常见于无效的 URL。
-
500 Internal Server Error
- 服务器遇到意外情况,导致无法完成请求。
-
503 Service Unavailable
- 服务器当前无法处理请求,可能是由于过载或维护。
访问超时
在使用 requests
模块时,可以设置请求的超时时间,以防止请求因网络问题而长时间阻塞。可以通过 timeout
参数设置超时:
import requests
try:
response = requests.get('https://zbr/data', timeout=5) # 设置超时为5秒
response.raise_for_status() # 检查请求是否成功
except requests.exceptions.Timeout:
print('请求超时!')
except requests.exceptions.HTTPError as err:
print(f'HTTP错误:{err}')
except Exception as err:
print(f'其他错误:{err}')
cookie的查询和设置
查询 Cookies
在发送请求后,你可以通过 response.cookies
属性来访问服务器返回的 cookies:
import requests
# 发送请求
response = requests.get('https://httpbin.org/cookies/set?name=value')
# 查询 cookies
cookies = response.cookies
for cookie in cookies:
print(f'{cookie.name}: {cookie.value}')
设置 Cookies
在发送请求时,可以通过 cookies
参数来设置 cookies
import requests
# 创建一个字典,包含要设置的 cookies
cookies = {'name': 'value', 'session_id': 'abc123'}
# 发送请求并设置 cookies
response = requests.get('https://httpbin.org/cookies', cookies=cookies)
# 打印返回的 cookies
print(response.json())
设置爬虫代理
在使用 requests
模块进行网页爬虫时,设置代理可以帮助你隐藏真实 IP 地址,避免被网站封禁。
就是找到代理服务商 买一下资源 把信息填到proxies 里面去
import requests
# 设置代理
proxies = {
'http': 'http://your_http_proxy:port',
'https': 'http://your_https_proxy:port',
}
# 身份验证写法
proxies = {
'http': 'http://username:password@your_http_proxy:port',
'https': 'http://username:password@your_https_proxy:port',
}
# 要发送的数据
data = {'key': 'value'}
# 发送 POST 请求
response = requests.post('https://httpbin.org/post', data=data, proxies=proxies)
# 打印响应内容
print(response.json())
小试牛刀
import requests
# 目标 URL
url = 'https://www.baidu.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'
}
try:
# 发送 GET 请求
response = requests.get(url, headers=headers)
# 检查请求是否成功
response.raise_for_status()
# 保存为 HTML 文件
with open('baidu.html', 'w', encoding='utf-8') as file:
file.write(response.text)
print('网页已成功保存为 baidu.html')
except requests.exceptions.RequestException as e:
print(f'请求出错: {e}')
至少 下载下来东西了