python网页爬虫
F12提取关键请求信息
准备阶段
打开目标网页(确保需爬取的内容已显示)
按 F12(或 Ctrl+Shift+I)调出开发者工具
切换至「Network(网络)」面板,勾选「Preserve log(保留日志)」
目标请求快速排查
一、必查正向特征(符合越多,越可能是目标请求)
URL 包含关键词:data、list、api、query、get、fetch、info、content、item、detail
请求方法:GET/POST(多数数据接口用这两种,PUT/DELETE 可暂不优先关注)
Response 格式:JSON(最易解析)或 HTML 片段(含目标文本 / 数值)
响应大小:大于 1KB(数据量通常比静态资源大,排除几十字节的无效请求)
参数关联性:URL/Payload 含与目标相关的参数(如 id、page、keyword、category)
二、快速排除无效请求(直接跳过这类 XHR)
URL 含静态资源标识:icon、img、image、css、js、font、svg、png、jpg
响应状态码:404(不存在)、403(无权限,暂不处理)、500(服务器错误)
响应内容:空数据、纯广告信息、统计类数据(如 pv/uv、埋点数据)
命名无意义:URL 含随机字符串(如 “a1b2c3”)且 Response 无目标关键词
请求类型关联:与页面操作无关(如未点击 “加载更多” 却出现的分页请求)
三、目标数据验证三步法(确认是否为最终目标)
打开请求的「Response」面板,按 Ctrl+F 搜索目标关键词(如商品名、价格、文章标题)
若搜索到,核对数据格式是否完整(如 JSON 中字段是否齐全,HTML 是否含完整内容)
复制 Request URL 到浏览器新标签页,访问后确认返回数据与面板一致(排除临时失效接口)
四、紧急排查技巧(卡顿时用)
清空 Network 日志(点击「Clear」图标),重新触发数据加载(刷新 / 点击按钮),只看新出现的 XHR
若仍找不到,切换「Filter」为 “All”,再按 “Size” 列倒序排序,优先查看大体积请求
用「Preview」面板快速浏览 JSON 结构,重点看 “data”“result”“list” 节点下的内容
提取关键信息
点击目标请求,查看「Headers(请求头)」
复制「Request URL」(爬虫请求地址)
记录请求方法(GET/POST)
提取必要参数:GET 从「Query String Parameters」获取,POST 从「Payload」获取
复制关键请求头(User-Agent、Cookie、Referer 等,用于模拟浏览器)
切换至「Response(响应)」面板
确认数据格式(JSON/HTML)及完整性(与网页显示内容一致)
复制响应数据备用(用于验证爬虫返回结果)
验证与备用方案
若接口数据完整:直接用提取的 URL、参数、请求头开发爬虫
若接口无目标数据:切换至「Elements(元素)」面板,复制对应 HTML 节点(静态页面适用)
测试接口:复制 Request URL 到浏览器地址栏,验证是否能正常返回数据
反爬配置准备
整理请求头信息,确保爬虫包含 User-Agent、Cookie 等关键字段
记录参数规则(如时间戳、签名等动态参数,需后续模拟生成)
基础网络请求工具
用于发送 HTTP/HTTPS 请求,获取网页原始数据(HTML、JSON 等)。
requests
最常用的 HTTP 库,语法简洁,支持 GET/POST、会话保持、代理、Cookie、超时设置等。
适合爬取静态页面(内容在初始 HTML 中),是爬虫入门首选。
解析工具(处理请求返回的数据)
用于从 HTML/XML/JSON 中提取目标信息(如文本、链接、属性等),前文已提及,此处简要汇总:
BeautifulSoup:解析 HTML/XML,容错性强,适合简单结构。
lxml:高效解析库,支持 XPath 和标签树操作,速度快,适合复杂结构。
PyQuery:模仿 jQuery 语法,支持 CSS 选择器,适合前端开发者。
json 库:解析 JSON 数据(接口返回的结构化数据常用)。
re(正则表达式):辅助提取固定格式内容(如手机号、邮箱)。
动态页面爬取工具(JavaScript 渲染内容)
针对 JavaScript 动态加载的内容(如异步加载、点击后生成的内容),普通请求工具无法直接获取,需模拟浏览器行为。
Selenium
自动化测试工具,可控制真实浏览器(Chrome、Firefox 等)执行点击、输入等操作,获取渲染后的完整页面。
支持无头模式(无界面运行),适合处理复杂交互场景(如登录、滑块验证)。
1 2 3 4 5 6 7 8 9 | |
Playwright
微软推出的自动化工具,支持 Chrome、Firefox、WebKit 浏览器,API 更简洁,内置等待机制,稳定性优于 Selenium。
支持同步 / 异步两种模式,适合处理现代前端框架(React、Vue)生成的动态页面。
1 2 3 4 5 6 7 | |
爬虫框架(简化复杂爬虫开发)
封装了请求、解析、去重、存储、代理等功能,适合大规模、结构化爬取。
Scrapy
最成熟的 Python 爬虫框架,功能全面:支持并发请求、自动去重(基于指纹)、分布式爬取(结合 Scrapy-Redis)、自定义中间件(处理代理、登录等)。 适合爬取大型网站,遵循 “管道(Pipeline)” 设计,数据提取(Item)和存储(如 MySQL、MongoDB)分离。 示例(创建爬虫):
1 2 | |
PySpider
带 Web 界面的爬虫框架,支持可视化编辑、调试和监控,适合快速开发中小型爬虫。 内置分布式支持和任务调度,语法类似 Scrapy 但更简洁。
代理与反反爬工具
应对网站反爬机制(如 IP 封禁、UA 检测、验证码)。
ProxyPool
代理池工具,自动抓取、验证免费代理,提供 API 供爬虫调用,解决 IP 被封问题。
fake_useragent
生成随机 User-Agent,模拟不同浏览器请求,避免因固定 UA 被识别。
示例:
1 2 3 4 | |
数据存储工具
爬取的数据需持久化存储,常用工具:
文件存储:csv(表格数据)、json(结构化数据)、pandas(数据分析 + 存储)。
数据库:
关系型:MySQL(配合 pymysql 库)、PostgreSQL。
非关系型:MongoDB(配合 pymongo 库,适合存储非结构化数据)、Redis(缓存或分布式爬虫去重)。
其他辅助工具
Fiddler / Charles:抓包工具,分析网页请求(尤其动态页面的 API 接口)。
robots.txt 解析:robots-parser 库,遵守网站爬虫协议。
多线程 / 异步:threading(多线程)、aiohttp(异步请求,提升效率)。
工具选择建议
简单静态页爬取:requests + BeautifulSoup/lxml。
动态页爬取:Playwright(优先)或 Selenium。
大规模 / 结构化爬取:Scrapy。
处理反爬:代理池 + 随机 UA + 验证码识别工具。