Python requests模块详解:HTTP请求与响应处理

版权申诉
0 下载量 54 浏览量 更新于2024-08-05 收藏 242KB PDF 举报
"Python教程Requests" Python的requests模块是网络开发和爬虫开发中不可或缺的工具,它使得HTTP请求变得简单易行,同时也方便处理响应和提取数据。本教程将逐步介绍requests的使用方法和相关功能。 ### 发送HTTP请求 requests模块通过一个名为`requests`的函数支持多种HTTP请求类型,如GET、POST、PUT和DELETE。 #### GET请求 GET请求是最基本的请求方式,通常用于获取网页数据。以下是一个简单的GET请求示例: ```python response = requests.get('http://www.example.com') ``` 要检查请求是否成功,可以查看`response`对象的`status_code`属性,若返回200,表示请求成功。响应的正文可通过`content`属性获取: ```python if response.status_code == 200: print(response.content) ``` #### GET请求与查询参数 当需要向URL传递参数时,可以将参数以字典形式传递给`params`参数: ```python params = {'key1': 'value1', 'key2': 'value2'} response = requests.get('http://www.example.com', params=params) ``` ### POST请求 POST请求常用于向服务器提交数据。例如: ```python data = {'key': 'value'} response = requests.post('http://www.example.com', data=data) ``` ### 其他HTTP方法 PUT和DELETE请求与GET和POST类似,只是它们分别用于更新和删除资源: ```python # PUT请求 response = requests.put('http://www.example.com/资源ID', data={'key': 'new_value'}) # DELETE请求 response = requests.delete('http://www.example.com/资源ID') ``` ### 处理响应 响应对象提供了丰富的信息,如状态代码、头部信息和正文内容: - `status_code`:HTTP响应状态码,如200表示成功,404表示未找到。 - `headers`:响应头部信息,是一个字典类型。 - `content`:响应正文,通常为字节序列。 - `text`:将`content`解码后的文本字符串。 ### 异常处理 requests库会抛出不同类型的异常来处理请求错误: - `requests.exceptions.RequestException`:所有requests异常的基类,包括下面的异常。 - `requests.exceptions.ConnectionError`:网络连接问题。 - `requests.exceptions.HTTPError`:HTTP错误状态码(非200)引发。 - `requests.exceptions.Timeout`:请求超时。 示例: ```python try: response = requests.get('http://www.example.com', timeout=5) except requests.exceptions.Timeout: print("请求超时") except requests.exceptions.RequestException as e: print(f"发生错误:{e}") ``` ### 会话管理 `Session`对象允许保持某些请求的上下文,如cookies: ```python s = requests.Session() s.get('http://www.example.com') ``` ### 文件上传 使用`files`参数上传文件: ```python files = {'file': open('path_to_file', 'rb')} response = requests.post('http://www.example.com/upload', files=files) ``` ### 代理 设置代理可以在`proxies`参数中指定: ```python proxies = {'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080'} response = requests.get('http://www.example.com', proxies=proxies) ``` ### Cookie 可以使用`cookies`参数传递或获取cookies: ```python cookies = dict(cookies_are='delicious') response = requests.get('http://www.example.com', cookies=cookies) ``` ### SSL验证 可以自定义SSL证书验证: ```python response = requests.get('https://www.example.com', verify='path_to_ca_bundle') ``` ### 超时设置 通过`timeout`参数设定请求超时时间: ```python response = requests.get('http://www.example.com', timeout=5) ``` ### 总结 Python的requests模块提供了强大且易于使用的接口,使得开发者能够高效地进行网络请求和爬虫开发。无论是基础的GET和POST请求,还是更复杂的会话管理、文件上传、代理设置、Cookie处理和异常处理,requests都提供了完善的解决方案。在实际开发中,结合这些功能可以更好地应对各种网络请求场景。