赞
踩
目录
Requests是一个流行的Python第三方库,它专为HTTP通信而设计,旨在使网络请求更加简单和人性化。以下是关于Requests的概述:
确保你已经安装了Requests库。如果还没有安装,可以使用pip进行安装
pip install requests
这个示例中,我们定义了请求的URL、查询参数和请求头。然后,我们使用requests.get()
方法发送GET请求,并获取响应对象。接着,我们检查响应的状态码以确保请求成功,并输出请求的URL、状态码和响应内容。如果服务器返回的是JS ON数据,我们还尝试解析它并打印出来。
请注意,你需要将url
、params
和headers
替换为你实际要发送请求的目标URL、查询参数和请求头信息。此外,处理响应时,你可能需要根据实际情况调整代码,以正确处理服务器返回的数据。
示例:
- import requests
-
- # 定义请求的URL
- url = 'https://www.baidu.com'
-
- # 定义查询参数
- params = {
- 'key1': 'shenghao',
- 'key2': 'haozi'
- }
-
- # 定义请求头
- headers = {
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
- }
-
- # 发送GET请求
- response = requests.get(url, params=params, headers=headers)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 输出请求URL
- print('请求URL:', response.url)
-
- # 输出响应状态码
- print('状态码:', response.status_code)
-
- # 输出响应内容(文本格式)
- print('文本响应内容:', response.text)
-
- # 如果你知道服务器返回的是JSON数据,可以解析它
- try:
- data = response.json()
- print('JSON响应内容:', data)
- except ValueError:
- print('响应内容不是有效的JSON格式')
-
- else:
- # 如果请求失败,打印错误信息
- print('请求失败,状态码:', response.status_code)
- print('错误信息:', response.reason)
-
- # 你还可以获取其他响应信息,如编码方式和内容长度
- print('响应编码:', response.encoding)
- print('内容长度:', len(response.content))
使用 Requests 库从 URL 下载二进制数据(例如,一个图片文件)
示例:
- import requests
-
- # 图片文件的URL
- url = 'https://www.baidu.com/img/bd_logo1.png'
-
- # 发送GET请求,获取二进制响应内容
- response = requests.get(url, stream=True)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 以二进制格式打开本地文件用于写入
- with open('image.jpg', 'wb') as file:
- # 使用iter_content方法按块读取响应内容,减少内存使用
- for chunk in response.iter_content(chunk_size=8192):
- if chunk: # 过滤掉空块
- file.write(chunk)
- print('图片下载成功!')
- else:
- print('请求失败,状态码:', response.status_code)
示例:
- import requests
-
- # 定义请求的URL
- url = 'https://httpbin.org/post'
-
- # 定义要提交的表单数据
- form_data = {
- 'username': 'shenghao',
- 'password': 'haozi'
- }
-
- # 设置请求头,通常不需要特别设置,但有时候可能需要
- headers = {
- 'Content-Type': 'application/x-www-form-urlencoded'
- }
-
- # 发送POST请求
- response = requests.post(url, data=form_data, headers=headers)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 输出响应内容
- print('请求成功!')
- print('响应内容:', response.text)
- else:
- # 如果请求失败,打印错误信息
- print('请求失败,状态码:', response.status_code)
- print('错误信息:', response.reason)
- # 还可以打印出服务器返回的错误信息,如果有的话
- if response.text:
- print('服务器返回的错误信息:', response.text)
通过POST请求发送JSON数据,你需要设置Content-Type
头为application/json
,并将数据编码为JSON格式
示例:
- import requests
- import json
-
- # 定义请求的URL
- url = 'https://httpbin.org/post'
-
- # 定义要提交的JSON数据
- json_data = {
- 'username': 'shenghao',
- 'password': 'haozi'
- }
-
- # 将Python字典转换为JSON字符串
- json_string = json.dumps(json_data)
-
- # 设置请求头
- headers = {
- 'Content-Type': 'application/json'
- }
-
- # 发送POST请求
- response = requests.post(url, data=json_string, headers=headers)
-
- # 检查请求是否成功
- if response.status_code == 200:
- # 输出响应内容
- print('请求成功!')
- print('响应内容:', response.json()) # 假设服务器返回的是JSON格式的数据
- else:
- # 如果请求失败,打印错误信息
- print('请求失败,状态码:', response.status_code)
- print('错误信息:', response.reason)
- # 还可以打印出服务器返回的错误信息,如果有的话
- if response.text:
- print('服务器返回的错误信息:', response.text)
使用cookies进行登录验证通常涉及以下步骤:
示例:
- import requests
-
- # 登录URL
- login_url = 'https://httpbin.org/post'
- # 目标URL(需要登录后才能访问)
- target_url = 'https://example.com/protected-resource'
-
- # 登录时所需的数据
- login_data = {
- 'username': 'shenghao',
- 'password': 'haozi'
- }
-
- # 第一步:发送登录请求
- login_response = requests.post(login_url, data=login_data)
-
- # 假设登录成功,服务器会设置cookies
- # 我们从登录响应中获取这些cookies
- if login_response.status_code == 200:
- # 获取cookies
- cookies = login_response.cookies.get_dict()
-
- # 第二步:使用获取到的cookies发送请求到目标URL
- target_response = requests.get(target_url, cookies=cookies)
-
- # 打印目标URL的响应内容
- print(target_response.text)
- else:
- print("登录失败,状态码:", login_response.status_code)
Session
对象提供了一种方式来跨多个请求保持某些参数和cookies。当你需要向同一网站发送多个请求,并且这些请求之间需要共享某些状态(比如cookies或认证信息)时,使用Session
是非常有用的。
示例:
- import requests
-
- # 创建一个Session对象
- s = requests.Session()
-
- # 使用Session对象发送第一个请求(例如登录)
- login_url = 'https://httpbin.org/post'
- login_data = {'username': 'shenghao', 'password': 'haozi'}
- login_response = s.post(login_url, data=login_data)
-
- # 检查登录是否成功
- if login_response.status_code == 200:
- print('登录成功!')
- else:
- print('登录失败,状态码:', login_response.status_code)
-
- # 发送第二个请求(需要身份验证的资源)
- protected_url = 'https://httpbin.org/get'
- protected_response = s.get(protected_url)
-
- # 由于Session对象自动处理cookies,所以不需要手动设置cookies
- # 检查受保护资源的请求是否成功
- if protected_response.status_code == 200:
- print('访问受保护资源成功!')
- print('响应内容:', protected_response.text)
- else:
- print('访问受保护资源失败,状态码:', protected_response.status_code)
-
- # 关闭Session(可选,因为Session对象会在Python对象被垃圾回收时自动关闭)
- s.close()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。