当前位置:   article > 正文

Python requests模块 快速入门 这篇就够了_快速上手request

快速上手request

目录

一、Requests概述

二、安装Requests

三、Get请求

3.1 Get请求示例

3.2 Get请求爬取二进制数据

四、Post请求

4.1 Post请求示例

4.2 发送JSON数据

五、验证Cookies

六、会话请求


一、Requests概述

Requests是一个流行的Python第三方库,它专为HTTP通信而设计,旨在使网络请求更加简单和人性化。以下是关于Requests的概述:

  1. 简单易用:Requests提供了简洁明了的API,使得发送HTTP请求变得非常直观。与Python标准库中的urllib相比,Requests的语法更加简洁,易于学习和使用。
  2. 功能全面:Requests支持HTTP的所有主要方法,如GET、POST、PUT、DELETE等。它还支持设置请求头、请求体、超时时间、代理等。此外,Requests还支持会话保持、文件上传、自动内容解码和JSON解析等功能。
  3. 自动化处理:Requests库内部处理了许多底层的细节,如连接池管理、Keep-alive连接、URL编码等,使得开发者可以专注于业务逻辑而无需关心底层的HTTP通信细节。
  4. 良好的文档和社区支持:Requests拥有详尽的官方文档和活跃的社区,这意味着开发者可以轻松地找到问题的答案或获得帮助。
  5. 兼容性:Requests库在Python 2和Python 3中都可以使用,并且与许多其他Python库和框架兼容。
  6. 安全:Requests在处理HTTPS请求时提供了SSL验证和证书管理功能,确保通信的安全性。

二、安装Requests

确保你已经安装了Requests库。如果还没有安装,可以使用pip进行安装

pip install requests

三、Get请求

3.1 Get请求示例

这个示例中,我们定义了请求的URL、查询参数和请求头。然后,我们使用requests.get()方法发送GET请求,并获取响应对象。接着,我们检查响应的状态码以确保请求成功,并输出请求的URL、状态码和响应内容。如果服务器返回的是JS ON数据,我们还尝试解析它并打印出来。

请注意,你需要将urlparamsheaders替换为你实际要发送请求的目标URL、查询参数和请求头信息。此外,处理响应时,你可能需要根据实际情况调整代码,以正确处理服务器返回的数据。 

示例:

  1. import requests
  2. # 定义请求的URL
  3. url = 'https://www.baidu.com'
  4. # 定义查询参数
  5. params = {
  6. 'key1': 'shenghao',
  7. 'key2': 'haozi'
  8. }
  9. # 定义请求头
  10. headers = {
  11. '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'
  12. }
  13. # 发送GET请求
  14. response = requests.get(url, params=params, headers=headers)
  15. # 检查请求是否成功
  16. if response.status_code == 200:
  17. # 输出请求URL
  18. print('请求URL:', response.url)
  19. # 输出响应状态码
  20. print('状态码:', response.status_code)
  21. # 输出响应内容(文本格式)
  22. print('文本响应内容:', response.text)
  23. # 如果你知道服务器返回的是JSON数据,可以解析它
  24. try:
  25. data = response.json()
  26. print('JSON响应内容:', data)
  27. except ValueError:
  28. print('响应内容不是有效的JSON格式')
  29. else:
  30. # 如果请求失败,打印错误信息
  31. print('请求失败,状态码:', response.status_code)
  32. print('错误信息:', response.reason)
  33. # 你还可以获取其他响应信息,如编码方式和内容长度
  34. print('响应编码:', response.encoding)
  35. print('内容长度:', len(response.content))

3.2 Get请求爬取二进制数据

使用 Requests 库从 URL 下载二进制数据(例如,一个图片文件)

示例:

  1. import requests
  2. # 图片文件的URL
  3. url = 'https://www.baidu.com/img/bd_logo1.png'
  4. # 发送GET请求,获取二进制响应内容
  5. response = requests.get(url, stream=True)
  6. # 检查请求是否成功
  7. if response.status_code == 200:
  8. # 以二进制格式打开本地文件用于写入
  9. with open('image.jpg', 'wb') as file:
  10. # 使用iter_content方法按块读取响应内容,减少内存使用
  11. for chunk in response.iter_content(chunk_size=8192):
  12. if chunk: # 过滤掉空块
  13. file.write(chunk)
  14. print('图片下载成功!')
  15. else:
  16. print('请求失败,状态码:', response.status_code)

四、Post请求

4.1 Post请求示例

示例:

  1. import requests
  2. # 定义请求的URL
  3. url = 'https://httpbin.org/post'
  4. # 定义要提交的表单数据
  5. form_data = {
  6. 'username': 'shenghao',
  7. 'password': 'haozi'
  8. }
  9. # 设置请求头,通常不需要特别设置,但有时候可能需要
  10. headers = {
  11. 'Content-Type': 'application/x-www-form-urlencoded'
  12. }
  13. # 发送POST请求
  14. response = requests.post(url, data=form_data, headers=headers)
  15. # 检查请求是否成功
  16. if response.status_code == 200:
  17. # 输出响应内容
  18. print('请求成功!')
  19. print('响应内容:', response.text)
  20. else:
  21. # 如果请求失败,打印错误信息
  22. print('请求失败,状态码:', response.status_code)
  23. print('错误信息:', response.reason)
  24. # 还可以打印出服务器返回的错误信息,如果有的话
  25. if response.text:
  26. print('服务器返回的错误信息:', response.text)

4.2 发送JSON数据

通过POST请求发送JSON数据,你需要设置Content-Type头为application/json,并将数据编码为JSON格式

示例:

  1. import requests
  2. import json
  3. # 定义请求的URL
  4. url = 'https://httpbin.org/post'
  5. # 定义要提交的JSON数据
  6. json_data = {
  7. 'username': 'shenghao',
  8. 'password': 'haozi'
  9. }
  10. # 将Python字典转换为JSON字符串
  11. json_string = json.dumps(json_data)
  12. # 设置请求头
  13. headers = {
  14. 'Content-Type': 'application/json'
  15. }
  16. # 发送POST请求
  17. response = requests.post(url, data=json_string, headers=headers)
  18. # 检查请求是否成功
  19. if response.status_code == 200:
  20. # 输出响应内容
  21. print('请求成功!')
  22. print('响应内容:', response.json()) # 假设服务器返回的是JSON格式的数据
  23. else:
  24. # 如果请求失败,打印错误信息
  25. print('请求失败,状态码:', response.status_code)
  26. print('错误信息:', response.reason)
  27. # 还可以打印出服务器返回的错误信息,如果有的话
  28. if response.text:
  29. print('服务器返回的错误信息:', response.text)

五、验证Cookies

使用cookies进行登录验证通常涉及以下步骤:

  1. 通过用户名和密码发送登录请求到服务器。
  2. 服务器验证用户名和密码,如果验证成功,会设置一个或多个cookies,并将其发送给客户端。
  3. 客户端在接下来的请求中携带这些cookies,以证明用户的登录状态。

示例:

  1. import requests
  2. # 登录URL
  3. login_url = 'https://httpbin.org/post'
  4. # 目标URL(需要登录后才能访问)
  5. target_url = 'https://example.com/protected-resource'
  6. # 登录时所需的数据
  7. login_data = {
  8. 'username': 'shenghao',
  9. 'password': 'haozi'
  10. }
  11. # 第一步:发送登录请求
  12. login_response = requests.post(login_url, data=login_data)
  13. # 假设登录成功,服务器会设置cookies
  14. # 我们从登录响应中获取这些cookies
  15. if login_response.status_code == 200:
  16. # 获取cookies
  17. cookies = login_response.cookies.get_dict()
  18. # 第二步:使用获取到的cookies发送请求到目标URL
  19. target_response = requests.get(target_url, cookies=cookies)
  20. # 打印目标URL的响应内容
  21. print(target_response.text)
  22. else:
  23. print("登录失败,状态码:", login_response.status_code)

六、会话请求

Session对象提供了一种方式来跨多个请求保持某些参数和cookies。当你需要向同一网站发送多个请求,并且这些请求之间需要共享某些状态(比如cookies或认证信息)时,使用Session是非常有用的。

示例:

  1. import requests
  2. # 创建一个Session对象
  3. s = requests.Session()
  4. # 使用Session对象发送第一个请求(例如登录)
  5. login_url = 'https://httpbin.org/post'
  6. login_data = {'username': 'shenghao', 'password': 'haozi'}
  7. login_response = s.post(login_url, data=login_data)
  8. # 检查登录是否成功
  9. if login_response.status_code == 200:
  10. print('登录成功!')
  11. else:
  12. print('登录失败,状态码:', login_response.status_code)
  13. # 发送第二个请求(需要身份验证的资源)
  14. protected_url = 'https://httpbin.org/get'
  15. protected_response = s.get(protected_url)
  16. # 由于Session对象自动处理cookies,所以不需要手动设置cookies
  17. # 检查受保护资源的请求是否成功
  18. if protected_response.status_code == 200:
  19. print('访问受保护资源成功!')
  20. print('响应内容:', protected_response.text)
  21. else:
  22. print('访问受保护资源失败,状态码:', protected_response.status_code)
  23. # 关闭Session(可选,因为Session对象会在Python对象被垃圾回收时自动关闭)
  24. s.close()

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/463354
推荐阅读
相关标签
  

闽ICP备14008679号