ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Python 爬虫(03)Requests 库的使用

Python 爬虫(03)Requests 库的使用 一、引言在前两章中我们了解了 Python 爬虫的基础概念并学习了 urllib 库的一些基本用法。不过 urllib 在实际使用中步骤相对繁琐例如需要手动处理编码、创建请求对象、处理各种异常等。从本章开始我们正式引入爬虫开发中最常用的第三方库——Requests。Requests 把「人性化」的 HTTP 请求做成了默认选项让我们可以用更简洁的代码完成网页请求、接口调用和数据抓取。二、认识 Requests 库Requests 是一个基于 urllib3 封装的 HTTP 库。它在保留 urllib3 稳定、强大底层能力的同时提供了更加简洁、更符合直觉的接口。官方对它的描述是「HTTP for Humans」意思是把 HTTP 请求写得像人类语言一样自然。使用 Requests 库我们可以非常方便地完成以下常见操作发送 GET、POST、PUT、DELETE 等请求自定义请求头、请求参数和表单数据自动处理 Cookie并支持会话保持设置超时时间、代理和 SSL 证书验证解析文本、JSON 和二进制响应内容。三、安装 RequestsRequests 是第三方库使用前需要先通过 pip 安装。可以在命令行中执行以下命令pip install requests如果你使用的是国内网络也可以通过国内镜像源加速安装pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple安装完成后可以在 Python 环境中执行下面的代码验证 Requests 是否安装成功import requests print(requests.__version__)四、快速上手发送第一个请求下面通过一个最简单的示例向百度首页发起 GET 请求并打印响应状态码和部分页面内容import requests response requests.get(https://www.baidu.com) print(状态码, response.status_code) print(response.text[:200])只需要两行核心代码就完成了「发送请求—接收响应」的完整流程。下面我们对 Requests 的常用能力逐一展开讲解。五、GET 请求详解5.1 基础 GET 请求GET 请求主要用于获取网页内容。在 Requests 中直接调用requests.get()即可完成一次 GET 请求import requests response requests.get(https://www.baidu.com) print(response.status_code)六、POST 请求详解6.1 提交表单数据POST 请求通常用于登录、提交表单等操作。使用data参数可以提交表单格式的数据import requests data {username: admin, password: 123456} response requests.post(https://httpbin.org/post, datadata) print(response.json()[form])6.2 提交 JSON 数据在与后端接口交互时常需要提交 JSON 格式的数据。使用json参数可以自动完成序列化并设置正确的 Content-Typeimport requests payload {name: 小明, age: 18} response requests.post(https://httpbin.org/post, jsonpayload) print(response.json()[json])七、自定义请求头有些网站在请求时会检查请求头信息例如缺少 User-Agent 会被当作爬虫拦截。这时可以通过headers参数模拟浏览器import requests headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0 Safari/537.36 } response requests.get(https://www.baidu.com, headersheaders) print(response.status_code)除此之外还可以通过headers传递 Referer、Cookie、Authorization 等字段。八、响应对象的处理请求成功后我们会得到一个 Response 对象其中最常用的属性和方法如下status_codeHTTP 状态码200 表示成功text按文本方式返回响应内容content按字节方式返回响应内容适合下载图片、文件encoding响应内容的编码可以手动指定headers响应头信息json()当响应内容是 JSON 时直接解析为字典或列表。import requests response requests.get(https://api.github.com) print(response.status_code) print(response.headers[Content-Type]) data response.json() print(data)需要注意的是如果网页出现中文乱码通常是因为编码识别不准确可以手动设置response.encodingresponse requests.get(https://www.baidu.com) response.encoding utf-8 print(response.text)九、会话保持Session在登录、购物车等场景中服务器会通过 Cookie 来识别用户身份。如果每次请求都使用普通的requests.get()Cookie 无法自动保持。此时可以使用Session对象import requests session requests.Session() session.get(https://httpbin.org/cookies/set/name/value) response session.get(https://httpbin.org/cookies) print(response.json())Session会像浏览器一样自动保存和携带 Cookie适合需要保持登录状态的连续请求。十、超时、异常与重试10.1 设置超时如果请求长时间没有响应程序可能会一直等待。通过timeout参数可以设置超时时间单位是秒import requests response requests.get(https://httpbin.org/delay/3, timeout5) print(response.status_code)十三、总结Requests 是 Python 爬虫开发中最常用的 HTTP 库。本章我们学习了它的安装方法、GET 与 POST 请求、请求头设置、响应内容处理、Session 会话保持、超时与异常处理、代理和 SSL 验证等内容并通过一个抓取网页标题的案例进行了综合练习。掌握 Requests 只是爬虫的第一步后续章节我们还会继续学习数据解析、数据存储以及如何应对反爬机制。建议多加练习熟悉每种参数的使用场景为后续的实战项目打下扎实基础。
返回列表