为了账号安全,请及时绑定邮箱和手机立即绑定

requests基础教程:快速上手的HTTP请求库

requests库是Python开发者进行网络请求的强大工具,它简化了HTTP操作,提供简洁且功能丰富的接口,广泛应用于网络爬虫和API调用中,支持GET、POST请求,以及高级功能如headers、cookies管理,同时支持超时、重试和代理设置,帮助开发者高效处理网络任务。

在编写网络爬虫,或者调用外部API时,requests库成为了Python开发者不可或缺的工具。这个库提供了一个简洁且功能强大的HTTP客户端接口,用来处理基本的HTTP请求和响应。相较于原生的HTTP库,requests简化了复杂的网络编程细节,让开发者能够更专注于应用逻辑,而非网络通信的底层实现。requests的主要特点包括易于使用、对HTTP协议的全面支持、轻量级设计,以及良好的社区支持和丰富的文档。

为了开始使用requests库,首先需要确保你的Python环境已安装最新版本的Python解释器。然后,通过pip(Python的包管理器)简单地运行以下命令来安装requests

pip install requests

在安装过程中,确保你的Python环境已经配置好,能够正确地找到并安装第三方库。通常,这意味着你需要在命令行界面中使用管理员权限运行pip,或者确保你的环境变量包含了正确的Python解释器路径。

基本使用方法

发送GET和POST请求

requests库提供了发送HTTP请求的简单方法。通过requests.get()requests.post()方法,你可以轻松地发起请求并接收响应。

GET请求示例

import requests

# 发送GET请求
response = requests.get('http://example.com')
# 检查请求是否成功
if response.status_code == 200:
    # 输出响应的HTML内容
    print(response.text)
    # 解析JSON响应体
    data = response.json()
    print(data)
else:
    print(f"请求失败,状态码:{response.status_code}")

POST请求示例

import requests

# 发送包含数据的POST请求
data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('http://example.com/api', data=data)

# 检查请求是否成功
if response.status_code == 200:
    # 输出响应内容
    print(response.text)
else:
    print(f"请求失败,状态码:{response.status_code}")

处理请求响应

在接收到HTTP响应后,requests提供了丰富的属性和方法来处理响应信息。例如,可以通过response.text获取响应的文本内容,或者使用.json()方法解析JSON响应。

高级功能探索

使用headerscookies

设置headers

在请求中添加headers可以帮助控制请求方式,如设置用户代理、编码等。以下是一个示例:

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'
}
response = requests.get('http://example.com', headers=headers)

设置cookies

requests允许你向服务器发送自定义的cookies,这对于维护会话状态非常有用。

cookies = {
    'session': 'some_session_id'
}
response = requests.get('http://example.com', cookies=cookies)

配置超时、重试与代理设置

设置超时

通过timeout参数可以设置请求的超时时间。

response = requests.get('http://example.com', timeout=5)

设置重试

在需要实现重试逻辑时,可以使用Retry类和Session对象来实现自定义的重试功能。以下是一个自定义重试策略的例子:

import requests
from requests.adapters import HTTPAdapter
from requests.exceptions import RequestException
from urllib3.util.retry import Retry

# 设置重试策略
retry_strategy = Retry(
    total=3,  # 总重试次数
    backoff_factor=1,  # 指数退避因子
    status_forcelist=[429, 500, 502, 503, 504],  # 重试状态码列表
)
adapter = HTTPAdapter(max_retries=retry_strategy)
session = requests.Session()
session.mount('http://', adapter)
session.mount('https://', adapter)

response = session.get('http://example.com')

设置代理

在需要使用代理的网络环境下,可以通过proxies参数来设置代理服务器。

proxies = {
    'http': 'http://127.0.0.1:8080',
    'https': 'http://127.0.0.1:8080'
}
response = requests.get('http://example.com', proxies=proxies)
错误处理与响应状态

在使用requests时,处理错误和状态码是非常重要的。错误处理通常通过捕获requests.exceptions中的异常来实现。状态码则可以通过response.status_code获取,并根据需要进行检查和处理。

try:
    response = requests.get('http://example.com')
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"请求失败:{e}")
else:
    print(f"响应状态码:{response.status_code}")
    print(f"响应内容:{response.text}")
实践案例

Web爬虫应用

假设你想从一个网站上抓取新闻标题:

import requests
import re

def fetch_titles(url):
    response = requests.get(url)
    content = response.text
    titles = re.findall(r'<h2 class="title"><a href="(.*?)">(.*?)</a></h2>', content)
    return titles

titles = fetch_titles('http://example.com/news')
for title in titles:
    print(title[0], title[1])

API调用示例

调用一个天气API获取当前城市的天气信息:

import requests

def get_weather(city):
    api_url = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid=your_api_key'
    response = requests.get(api_url)
    data = response.json()
    if response.status_code == 200:
        return data['main']['temp']
    else:
        return None

temperature = get_weather('New York')
if temperature:
    print(f"纽约当前气温:{temperature}K")

通过以上示例,你可以看到requests库在处理网络请求方面的强大功能和便利性。无论是简单的GET请求,还是复杂的API集成和爬虫项目,requests都是一个高效且易于使用的工具。随着你对requests库的深入理解与实践,你将能够更高效地完成各种网络相关的任务。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消