掌握 HTTP:使用 Requests 库进行 Web 抓取的 Python 之旅
作者:互联网
介绍
HTTP,即超文本传输协议,是万维网上通信的支柱。它控制数据在 Web服务器和客户端之间的传输方式,促进信息的无缝交换。在我们日益数据驱动的世界中,网络抓取已成为一种从网站中提取有价值见解的强大技术。这就是Python 的 Requests 库发挥作用的地方 - 它就像一个值得信赖的助手,可以帮助我们轻松浏览复杂的HTTP并抓取数据。
了解 HTTP 协议
现在,让我们揭开HTTP协议的神秘面纱。将其想象为网络浏览器和托管网站的服务器之间使用的语言。我们将深入研究不同的 HTTP 方法,例如GET、POST、PUT 和 DELETE,每种方法在获取或操作数据方面都有独特的用途。另外,我们将解码这些神秘的HTTP 状态代码,并揭示标头在塑造客户端和服务器之间的信息流中的重要性。
当然!让我们分解每个术语:
客户端:在网络通信的上下文中,客户端是指从另一个计算机程序(称为服务器)请求服务或资源的设备或软件应用程序。客户端的常见示例包括 Web 浏览器(例如Chrome、Firefox 或 Safari)、移动应用程序或向服务器发送 HTTP 请求以检索数据或执行操作的任何程序。
服务器:服务器是一种计算机程序或设备,通过网络向其他计算机程序(称为客户端)提供服务或资源。在 Web 环境中,服务器通常指托管网站、Web 应用程序或Web 服务并响应来自客户端的 HTTP 请求的计算机程序。服务器存储和提供 Web 内容、处理用户请求并执行业务逻辑。
HTTP 状态代码:HTTP状态代码是标准化的三位数数字,指示客户端向服务器发出 HTTP 请求的结果。这些状态代码包含在服务器发送给客户端的响应中,提供有关请求是否成功、遇到错误或需要客户端采取进一步操作的信息。
下面简单解释一下一些常见的HTTP状态码:
200 OK:表示请求成功。
404 Not Found:表示在服务器上没有找到所请求的资源。
500 内部服务器错误:这表示服务器在处理请求时发生意外错误。
401 Unauthorized:表示请求需要认证或授权。
让我们使用 PIP 安装 requests 库:
第0步:在您的系统中下载python。
步骤 1:打开任意终端并运行以下命令:
pip install requests
Python 请求库入门
让我们看看发出 GET 请求有多么简单:
import requests response = requests.get('https://jsonplaceholder.typicode.com/todos/1') print(response.text)
输出:
{ "userId": 1, "id": 1, "title": "delectus aut autem", "completed": false }
如果你想以 JSON 格式打印响应,可以使用库json()提供的方法requests。这是修改后的代码:
import requests response = requests.get('https://jsonplaceholder.typicode.com/todos/1') # Check if the request was successful (status code 200) if response.status_code == 200: # Print the response in JSON format result_data = response.json() print(result_data.items()) else: # Print an error message if the request was unsuccessful print("Error:", response.status_code)
输出:
dict_items([('userId', 1), ('id', 1), ('title', 'delectus aut autem'), ('completed', False)])
requests以下是使用该库发送带有 JSON 数据的 POST 请求的等效 Python 代码:
import requests import json # Define the URL and payload (JSON data) url = 'https://dummyjson.com/posts/add' payload = { 'title': 'I am in love with someone.', 'userId': 5 # Add other post data here if needed } # Set the headers headers = {'Content-Type': 'application/json'} # Send the POST request with JSON payload response = requests.post(url, headers=headers, json=payload) # Check if the request was successful (status code 200) if response.status_code == 200: # Print the response in JSON format print(response.json()) else: # Print an error message if the request was unsuccessful print("Error:", response.status_code)
输出:
{'id': 151, 'title': 'I am in love with someone.', 'userId': 5}'id': 151, 'title': 'I am in love with someone.', 'userId': 5}
结论
因此,亲爱的读者,当我们的 Pythonic 之旅即将结束时,请记住——掌握 HTTP 和 Web 抓取的能力就在您的掌握之中。有了 Python 的 Requests 库,您就拥有了解锁大量信息和见解的工具。因此,继续前进,进一步探索,愿您的代码干净,您的咖啡浓郁,您的网络抓取冒险传奇!