Python网络请求实践: requests库的基本使用教程

171 阅读2分钟

Python网络请求实践: requests库的基本使用教程

网络请求是爬虫的核心。在Python中,requests库是执行HTTP请求的首选库,其设计目标是使HTTP请求更加简单快捷。这个教程将引导你了解如何使用requests库进行网络请求。

安装requests库

在开始之前,请确保你的环境中安装了requests库。如果还没有安装,可以通过以下命令进行安装:

pip install requests

发送简单的HTTP请求

requests提供了直观的方法来发送HTTP请求。这里是一些最常见的请求类型:

import requests

# 发送GET请求
response = requests.get('https://httpbin.org/get')

# 发送POST请求
data_to_send = {'key''value'}
response = requests.post('https://httpbin.org/post', data=data_to_send)

# 发送PUT请求
response = requests.put('https://httpbin.org/put', data=data_to_send)

# 发送DELETE请求
response = requests.delete('https://httpbin.org/delete')

每次请求后,requests会返回一个Response对象,包含服务器响应的所有信息。

处理响应内容

Response对象有多个属性和方法,可以让你访问响应的内容和其他元数据:

# 获取状态码
status_code = response.status_code

# 获取响应头
headers = response.headers

# 获取响应的文本内容
text_content = response.text

# 获取响应的字节内容
byte_content = response.content

# 获取JSON响应的内容(如果响应是JSON格式)
json_content = response.json()

带参数的请求

requests可以让你发送带参数的请求。参数可以通过URL(对于GET请求)或通过datajson参数(对于POST请求)发送。

# GET请求带URL参数
params = {'key1''value1''key2''value2'}
response = requests.get('https://httpbin.org/get', params=params)

# POST请求带数据
form_data = {'key1''value1''key2''value2'}
response = requests.post('https://httpbin.org/post', data=form_data)

# POST请求带JSON数据
json_data = {'key1''value1''key2''value2'}
response = requests.post('https://httpbin.org/post', json=json_data)

处理异常

在进行网络请求时,各种异常情况都有可能发生,比如网络问题、超时等。requests有几个异常类来帮助你处理这些问题:

from requests.exceptions import HTTPError, Timeout

try:
    response = requests.get('https://httpbin.org/get', timeout=0.01)
    response.raise_for_status()  # 将触发HTTPError,如果请求返回了不成功的状态码
except HTTPError as http_err:
    print(f'HTTP error occurred: {http_err}')
except Timeout:
    print('The request timed out')
except Exception as err:
    print(f'Other error occurred: {err}')

练习示例代码

现在,让我们来练习一段示例代码,尝试从一个实际的API获取数据。

import requests

def fetch_user_details(username):
    url = f'https://api.github.com/users/{username}'
    response = requests.get(url)
    return response.json()

# 获取GitHub用户的详情
user_details = fetch_user_details('octocat')
print(user_details)

在这个函数中,我们从GitHub API请求了一个用户的数据。如果你将'octocat'替换为其他GitHub用户名,你可以获取该用户的数据。

这就是使用requests库进行网络请求的基础。在爬虫中,你将使用这些技术来获取网页内容,然后对其进行解析和数据提取。在接下来的学习中,你会更深入地探索如何处理复杂的请求和响应,以及如何有效地管理HTTP会话和认证。