首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
1.1 HTTP基本原理
1.2 Web 网页基础
1.3 爬虫的基本原理
1.4 Session和Cookie
1.5 代理的基本原理
1.6 多线程和多进程的基本原理
2.1 urllib的使用
2.2 requests的使用
2.3 正则表达式
2.4 httpx的使用
2.5 基础爬虫案例实战
3.1 XPath的使用
3.2 Beautiful Soup的使用
3.3 pyquery的使用
3.4 parsel 的使用
4.1 TXT 文本文件存储
4.2 JSON 文件存储
4.3 CSV 文件存储
4.4 MySQL 存储
4.5 MongoDB 文档存储
4.6 Redis缓存存储
4.7 Elasticsearch 搜索引擎存储
4.8 RabbitMQ 的使用
5.1 什么是 Ajax
5.2 Ajax分析方法
5.3 Ajax 分析与爬取实战
6.1 协程的基本原理
6.2 aiohttp的使用
6.3 aiohttp 异步爬取实战
7.1 Selenium 的使用
7.2 Splash 的使用
7.3 Pyppeteer 的使用
7.4 Playwright 的使用
7.5 Selenium 爬取实战
7.6 Pyppeteer 爬取实战
7.7 CSS 位置偏移反爬案例分析与爬取实战
7.8 字体反爬案例分析与爬取实战
8.1 使用 OCR 技术识别图形验证码
8.2 使用 OpenCV 识别滑动验证码的缺口
8.3 使用深度学习识别图形验证码
8.4 使用深度学习识别滑动验证码的缺口
8.5 使用打码平台识别验证码
8.6 手机验证码的自动化处理
9.1 代理的设置
9.2 代理池的维护
9.3 付费代理的使用
9.4 ADSL 拨号代理的搭建方法
9.5 代理反爬案例爬取实战
10.1 模拟登录的基本原理
10.2 基于Session和Cookie的模拟登录爬取实战
10.3 基于JWT的模拟登录爬取实战
10.4 大规模账号池的搭建
11.1 网站加密和混淆技术简介
11.2 浏览器调试常用技巧
11.3 JavaScript Hook 的使用
11.4 无限 debugger 的原理与绕过
11.5 使用 Python 模拟执行 JavaScript
11.6 使用 Node.js 模拟执行 JavaScript
11.7 浏览器环境下 JavaScript 的模拟执行
11.8 AST 技术简介
11.9 使用 AST 技术还原混淆代码
11.10 特殊混淆案例的还原
11.11 WebAssembly 案例分析和爬取实战
11.12 JavaScript 逆向技巧总结
11.13 JavaScript 逆向爬取实战
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(上)
小册名称:Python3网络爬虫开发实战(上)
### 2.2 Requests的使用 在Python网络爬虫开发的实践中,`requests`库无疑是最为流行且强大的HTTP客户端库之一。它简洁易用的API使得发送网络请求、处理响应变得轻松自如。本章节将详细介绍`requests`库的基本使用,包括安装、发送各种HTTP请求、处理响应、异常处理以及高级功能如会话(Session)管理、Cookies处理、文件上传与下载等。 #### 2.2.1 安装Requests 在开始使用`requests`之前,首先需要确保你的Python环境中已经安装了它。`requests`库可以通过pip轻松安装,打开你的命令行工具(如CMD、Terminal或PowerShell),输入以下命令: ```bash pip install requests ``` 安装完成后,你就可以在Python代码中导入并使用`requests`库了。 #### 2.2.2 发送GET请求 GET请求是最常见的HTTP请求方法之一,用于请求服务器发送资源。使用`requests`发送GET请求非常简单,只需调用`requests.get()`方法,并传入目标URL作为参数。 ```python import requests url = 'http://httpbin.org/get' response = requests.get(url) print(response.text) # 打印响应体内容 print(response.status_code) # 打印HTTP状态码 ``` 在上述代码中,`response.text`包含了服务器返回的响应体(默认为Unicode编码),而`response.status_code`则是HTTP响应的状态码,用于判断请求是否成功。 #### 2.2.3 发送POST请求 POST请求通常用于向服务器提交数据,如表单提交。使用`requests.post()`方法时,可以通过`data`参数传递要发送的数据(默认为表单数据)。 ```python import requests url = 'http://httpbin.org/post' data = {'key': 'value'} response = requests.post(url, data=data) print(response.text) ``` 对于需要发送JSON数据的情况,可以使用`json`参数替代`data`,`requests`会自动将字典转换为JSON字符串,并设置正确的`Content-Type`头。 ```python import requests url = 'http://httpbin.org/post' json_data = {'key': 'value'} response = requests.post(url, json=json_data) print(response.text) ``` #### 2.2.4 响应内容处理 除了直接访问`response.text`获取响应体文本外,`requests`还提供了多种方式来处理响应内容: - `response.content`:以字节形式返回响应体,常用于处理二进制数据(如图片、视频)。 - `response.json()`:当响应体是JSON格式时,可以调用此方法直接解析JSON数据为Python字典。 - `response.headers`:获取响应头信息,以字典形式返回。 ```python import requests url = 'https://api.github.com/users/github' response = requests.get(url) # 解析JSON响应 user_info = response.json() print(user_info['name']) # 获取并打印响应头 print(response.headers['Content-Type']) ``` #### 2.2.5 异常处理 在网络请求中,难免会遇到各种异常情况,如网络问题、服务器错误等。`requests`库通过抛出异常的方式处理这些错误,常用的异常有: - `requests.exceptions.RequestException`:所有`requests`异常的基类。 - `requests.exceptions.ConnectionError`:网络连接问题。 - `requests.exceptions.HTTPError`:HTTP请求返回了不成功的状态码(默认400及以上)。 - `requests.exceptions.Timeout`:请求超时。 - `requests.exceptions.TooManyRedirects`:请求超过了设置的重定向次数。 使用`try-except`语句可以捕获并处理这些异常: ```python import requests from requests.exceptions import RequestException try: response = requests.get('http://httpbin.org/status/500') response.raise_for_status() # 如果响应状态码不是200系列,将抛出HTTPError except RequestException as e: print(f"请求发生错误:{e}") ``` #### 2.2.6 会话(Session)对象 `requests`库中的`Session`对象允许你跨请求保持某些参数,如cookies、headers、认证信息等。使用`Session`对象,你可以模拟一个用户在多个请求之间的会话。 ```python import requests session = requests.Session() # 发送第一个请求,并设置一些cookies session.get('http://httpbin.org/cookies/set/sessioncookie/123456789') # 第二个请求会自动带上上一个请求设置的cookies response = session.get('http://httpbin.org/cookies') print(response.text) ``` #### 2.2.7 Cookies处理 除了通过`Session`对象自动管理cookies外,你也可以手动设置和获取cookies。 ```python import requests url = 'http://httpbin.org/cookies' cookies = {'user': 'foo', 'password': 'bar'} response = requests.get(url, cookies=cookies) print(response.text) # 获取响应中的cookies for cookie in response.cookies: print(f"{cookie.name}: {cookie.value}") ``` #### 2.2.8 文件上传与下载 使用`requests`上传文件也非常简单,只需将文件对象作为`files`字典的值传入即可。下载文件则可以通过`response.content`获取二进制内容,然后保存到文件中。 ```python import requests # 上传文件 files = {'file': open('example.txt', 'rb')} response = requests.post('http://httpbin.org/post', files=files) # 下载文件 url = 'https://example.com/somefile.zip' response = requests.get(url) with open('downloaded_file.zip', 'wb') as f: f.write(response.content) ``` #### 结语 本章节详细介绍了`requests`库在Python网络爬虫开发中的基本使用方法,包括安装、发送GET/POST请求、处理响应内容、异常处理、会话管理、Cookies处理以及文件上传与下载等。`requests`库的强大功能和易用性,使其成为Python网络编程中不可或缺的工具之一。通过掌握这些基础,你将能够构建出功能强大的网络爬虫,轻松抓取互联网上的数据。
上一篇:
2.1 urllib的使用
下一篇:
2.3 正则表达式
该分类下的相关小册推荐:
Python高性能编程与实战
Python合辑9-判断和循环
Python合辑3-字符串用法深度总结
Python编程轻松进阶(一)
Python合辑10-函数
Python与办公-玩转Word
Python神经网络入门与实践
Python合辑12-面向对象
Python合辑4-130个字符串操作示例
Python编程轻松进阶(三)
实战Python网络爬虫
Python合辑7-集合、列表与元组