当前位置:首页>python>10分钟掌握 2026版 Python爬虫 之requests 网络请求模块

10分钟掌握 2026版 Python爬虫 之requests 网络请求模块

  • 2026-08-22 13:26:16
10分钟掌握 2026版 Python爬虫 之requests 网络请求模块

概述

入门 Python 爬虫其实超简单!先搞清楚爬虫的核心逻辑,再跟着练 requests 模块,从百度搜索到翻译实操,一步步拆解,新手也能快速上手~

一、网络爬虫介绍

(一)什么是网络爬虫?

  1. 网络爬虫(又称为网页蜘蛛,网络机器人,在 FOAF 社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

  2. 比如百度www.baidu.com搜索引擎的所有检索内容,都是百度的很多蜘蛛去万维网上抓取,以及进行持久化存储,用户通过百度搜索框,输入想要搜索的内容,百度服务器再通过算法检索出最相关,最佳的内容显示给搜索结果页面给用户展示。

(二)网络爬虫的核心工作内容

网络爬虫核心工作内容是去目标站点爬取网页,将网页中我们需要的内容进行解析,最后保存,比如保存到 Excel,数据库等。

(三)网络爬虫的用途

应用场景 1:搜索引擎抓取网页信息

不知道大家对于 Google、百度这种搜索引擎的工作原理都了解多少,搜索引擎的首要工作流程就是利用网络爬虫去爬取各个网站的页面。以百度蜘蛛为例,一旦有网站的页面更新了,百度蜘蛛就会出动,然后把爬取的页面信息搬回百度,再进行多次的筛选和整理。最终在大家搜索相关信息的时候,通过排名呈现给大家。可以说,没有网络爬虫,我们使用搜索引擎查询资料的时候,就不会那么便捷、全面和高效。

应用场景 2:爬取需要数据进行统计

冷数据启动时丰富数据的主要工具,新业务开始时,由于刚起步,所以没有多少数据,此时就需要爬取其他平台的数据来填充我们的业务数据。比如说,如果我们想做一个类似大众点评这样的平台,一开始没有商户等信息,就需要去爬取大众,美团等商家的信息来填充数据,比如天眼查,企查查,西瓜数据等等。

应用场景 3:出行类软件通过爬虫抢票

如果问网络爬虫技术应用最多的领域是什么?那一定是出行行业。相信每逢春运或是节假日,大家都用过一些抢票的软件,就为了获得一张机票或者是一张火车票,而这种出行类软件正是运用网络爬虫技术来达到抢票的目的。像抢票软件这样的网络爬虫,会不停地爬取交通出行的售票网站,一旦有票就会点击拍下来,放到自己的网站售卖。如果一定时间内没有人购买,就又会自动退票。然后又通过网站爬虫把票拍下来,到时间又继续退票,如此反复循环。

应用场景 4:聚合平台整合信息进行比较

如今,出现了很多比价平台、聚合电商还有返利平台等等给,这类聚合平台的本质都是提供横向数据比较,聚合服。比如说电商中经常需要有一种比价系统,从各大电商平台,如拼多多,淘宝,京东等抓取同一个商品的价格信息,以给用户提供最实惠的商品价格,这样就需要利用网络爬虫从各大电商平台爬取信息。

应用场景 5:爬取个人信用信息

黑产,灰产,风控等,比如我们要向某些资金方申请授信,在资金方这边首先要部署一道风控,来看你的个人信息是否满足授信条件,这些个人信息通常是某些公司利用爬虫技术在各个渠道爬取而来的,当然了这类场景还是要慎用,不然正应了那句话 “爬虫用的好,监牢进得早”。

(四)Python 的爬虫技术

爬虫的总流程可以理解为:蜘蛛要抓某个猎物 --> 沿着蛛丝找到猎物 --> 吃到猎物;即爬取 --> 解析 --> 存储;

在爬取数据过程中所需参考工具如下:

  • 请求库:urllib、requests、selenium

  • 解析库:正则、xpath、jsonpath、beautifulsoup、pyquery

  • 存储库:文件、MySQL、Mongodb、Redis……

  • 爬虫框架:Scrapy

二、requests 网络请求模块

(一) requests 模块简介及安装

requests 安装:

pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

或者直接用PyCharm安装

helloword.py代码实现

(二) requests 之 get 请求实例 - 百度搜索

知识点:

  1. 使用 requests 库发送 GET 请求,实现基础网络数据获取。

  2. 掌握 User-Agent 等请求头配置,模拟浏览器访问,避免被基础反爬识别。

  3. GET 请求使用 params 参数传递查询条件,requests 会自动拼接成 URL 问号参数。

  4. 通过 r.url 查看请求的完整地址,用于调试参数是否正确拼接。

  5. 通过 r.status_code 获取 HTTP 响应状态码,判断请求是否成功。

  6. 使用 r.encoding = 'utf-8' 设置响应编码,解决中文乱码问题。

  7. 通过 r.text 获取响应的网页文本内容,用于后续解析。

  8. 了解百度搜索接口基本格式:https://www.baidu.com/s 配合 wd 参数实现关键词搜索。

  9. 导入 json 模块,为后续 JSON 格式数据解析做准备。

  10. 掌握爬虫最基础流程:构造请求 → 发送请求 → 获取响应 → 处理结果。

(三) requests 之 post 请求实例 - 百度翻译

知识点

  1. 使用 requests 库发送 POST 请求,向接口提交数据。

  2. 通过 headers 配置 User-Agent 模拟浏览器,避免接口拦截。

  3. POST 请求使用 data 参数传递 表单格式 的请求参数。

  4. 接口返回数据为 JSON 格式字符串,可通过 r.text 获取。

  5. 使用 json 模块的 loads 方法将 JSON 字符串转为 Python 字典。

  6. 区分响应内容类型:字符串类型与字典类型的不同用途。

  7. 掌握接口请求基本流程:构造请求 → 发送 → 接收响应 → 解析数据。

  8. 了解百度翻译接口 sug 的基本调用方式,用于关键词查询建议。

(四) requests 之代理

很多网站和应用都有反爬虫策略,我们频繁的访问,一旦触发反爬虫策略,我们的 IP 就会被封掉。

我们为了应对反爬虫,可以使用代理。

代理 IP 能划分成高度匿名代理(以下简称:高匿)、普通匿名代理(以下简称:普匿)和透明代理三类,通过名字相信大家也猜出了每个级别的匿名程度是:高匿 > 普匿 > 透明。

  1. 透明代理 IP:顾名思义,服务器知道你在使用代理 IP,并且也知道你的真实 IP。

  2. 普匿代理 IP:普匿代理 IP 要比透明代理 IP 好一些,但是对方服务器仍然会知道你使用了代理。

  3. 高匿代理 IP:高匿代理 IP 不仅可以保护你的 IP 地址,并且不会改变你的访问请求,让对方服务器毫无察觉,不知道你使用了代理。因此,高匿代理的效果是最好的。

所以我们使用代理 IP,建议用高匿代理 IP,效果好。

推荐一个不错的代理 IP 商 - 快代理 https://www.kuaidaili.com/

他们提供了一些免费的代理 IP,晓哥测试了几个,都不能用。所以花钱买了,果然好用。

测试代码:

用了代理ip的结果(实际发请求在湖南,用了代理IP伪装在上海发请求,这里是花了10米测试的)

知识点总结

  1. HTTP 状态码 407 的含义:代理服务器要求身份认证(Proxy Authentication Required),请求因缺少代理认证信息被拒绝。

  2. requests 库的基本使用:通过requests.get()发送 GET 请求,配置请求 URL、请求头、代理参数和超时时间。

  3. 请求头(headers)的作用:模拟浏览器请求特征,包含 User-Agent、accept、accept-language 等字段,规避基础反爬策略。

  4. 带认证的代理配置格式:需遵循http://用户名:密码@代理IP:端口,且 HTTP 和 HTTPS 请求均需配置(HTTPS 请求的代理协议仍为 http)。

  5. 代理 IP 的分类与选择:高匿代理 > 普匿代理 > 透明代理,高匿代理能隐藏真实 IP 且不暴露代理使用行为,是爬虫首选。

  6. 异常处理机制:针对 requests 库的 ProxyError(代理错误)、Timeout(请求超时)等特定异常及通用 Exception 捕获,提升代码健壮性。

  7. 响应内容处理:设置响应编码为 utf-8 确保中文正常显示,通过print()输出响应状态码和内容,将响应文本写入本地 HTML 文件。

  8. 超时设置的必要性:在requests.get()中添加timeout参数,避免请求因代理失效或网络问题长时间卡死。

  9. 免费代理与付费代理的区别:免费代理易失效、需认证或被封禁,付费高匿代理稳定性更高。

  10. 字符串格式化:使用 f-string 拼接带认证信息的代理 URL,简化动态参数配置。

(五) requests 之 Cookie

知识点总结:

  1. requests 库 POST 请求基础:使用requests.post()发送 POST 请求,可指定请求 URL、请求头、请求体数据等参数。

  2. JSON 格式请求参数传递:通过json=data参数传递字典类型数据,requests 会自动将其序列化为 JSON 字符串,并设置Content-Type: application/json请求头。

  3. 请求头(headers)配置:模拟浏览器请求特征,包含User-Agent、accept、accept-language等字段,用于规避基础反爬或匹配后端接口要求。

  4. 响应状态码与响应头处理:通过r.status_code获取 HTTP 状态码,通过r.headers获取响应头信息,响应头为CaseInsensitiveDict类型。

  5. Cookie 管理与提取:登录请求的响应对象r中包含cookies属性,类型为RequestsCookieJar,可遍历获取所有 Cookie 的名称和值。

  6. Cookie 传递机制:将登录获取的CookieJar对象通过cookies参数传递给后续 GET 请求,实现会话保持,用于访问需要登录鉴权的接口。

  7. requests 库 GET 请求使用:使用requests.get()发送 GET 请求,可携带请求头和 Cookie,用于获取需要鉴权的资源。

  8. 本地接口测试场景:针对本地开发环境接口(localhost:5173)进行登录态保持与接口调用测试。

  9. 响应内容输出:通过r.text获取响应体文本内容,用于查看接口返回结果,验证登录状态与接口访问是否成功。

  10. 会话保持核心逻辑:依赖 Cookie 实现无状态 HTTP 协议下的会话维持,登录成功后服务器返回的 Cookie 会在后续请求中被携带,用于识别用户身份。

(六) requests 之 Session

如果接口接收JSON格式(推荐,大部分后端接口要求)

r = session.post(url=login_url, json=login_data, timeout=10)

方式2:如果接口接收form表单格式(备用)

r = session.post(url=login_url, data=login_data, timeout=10)

知识点总结:

  1. requests 库中 Session 对象的使用:创建 Session 实例可自动管理 Cookie,实现跨请求的会话保持,无需手动提取和传递 Cookie。

  2. Session 对象的请求头配置:通过session.headers.update()为会话统一设置请求头,所有基于该 Session 的请求都会携带这些请求头。

  3. POST 请求的两种参数传递方式:接口接收 JSON 格式时用json=参数传参,接收 form 表单格式时用data=参数传参,需匹配后端接口要求。

  4. 请求超时设置:在post()/get()方法中添加timeout参数,避免请求因网络或服务器问题长时间阻塞。

  5. 异常处理机制:使用 try-except 捕获请求过程中的通用异常,提升代码的健壮性,便于排查请求出错原因。

  6. 登录接口与鉴权接口的调用逻辑:先调用登录接口完成身份验证,再调用需要登录权限的目标接口,利用 Session 自动携带登录后的 Cookie 完成鉴权。

  7. 响应信息的调试输出:打印请求状态码、响应内容、返回的 Cookie 等信息,用于验证登录是否成功及排查接口调用问题。

  8. HTTP 请求方法的使用:使用session.post()发送登录请求,使用session.get()发送获取资源的请求,适配不同接口的请求方式。

  9. 请求头字段的作用:配置User-Agent、accept、accept-language等字段,模拟浏览器请求特征,适配后端接口的请求头校验规则。

  10. 本地接口测试:针对本地开发环境(localhost)的接口进行登录鉴权和接口访问测试,验证会话保持逻辑的有效性。

结束语

1

后续我会持续输出优质、实用的内容,也欢迎大家在评论区留言,说说你们最想学习的内容、遇到的困惑,我们一起交流、一起进步。

愿每一位软件人,都能在这里收获知识、突破自我,在自己的赛道上发光发热✨

最新文章

随机文章