Python 爬虫 · requests / Selenium / Scrapy

爬虫就是互联网的数据搬运工——自动打开网页、提取数据、存成你要的格式。这一页从 requests 发第一个请求,讲到 Scrapy 工程化爬虫、aiohttp 并发提速。版本基线:requests 2.32.x、BeautifulSoup4 4.12.x、lxml 5.x、Scrapy 2.11.x、Selenium 4.x、Playwright 1.48.x、aiohttp 3.10.x——以官网最新稳定版为准。

最新版本与兼容性(以 PyPI 最新稳定版为准)
库版本基线定位
requests2.32.x最流行的 HTTP 库,发请求的瑞士军刀。
BeautifulSoup44.12.xHTML 解析,找标签提取文本,入门首选。
lxml5.xXML/HTML 解析,比 BS4 快,支持 XPath。
Scrapy2.11.x爬虫界的工程队,异步高性能框架。
Selenium4.x雇个真人帮你点浏览器,对付动态页面。
Playwright1.48.x微软出品的现代自动化,比 Selenium 更快更稳。
aiohttp3.10.x异步 HTTP,几百个请求并发飞。
Pandas2.2.x数据清洗存储,to_csv/to_excel 一把梭。
测

小结 & 自测题

Summary & Quiz

爬虫的核心不是某个库,是流程:发请求、解析、存储、反爬应对。库会更新,思路不变。遮住答案答完这 5 题。

论爬虫学习心法

① 先跑通再优化:先用 requests+BS4 跑通一个站,再提速、再工程化。② 看 DevTools:F12 Network 是爬虫最好的朋友,所有答案都在里面。③ 慢就是快:礼貌爬,别被封,封一次重爬更慢。④ 法律红线别碰:个人信息、登录墙后数据、版权全文,碰都别碰。

自测 · Python 爬虫

1.(选型题)要爬 5 万条公开新闻,静态 HTML,选 requests+BS4、Selenium 还是 Scrapy?

查看答案

答案:Scrapy(或 aiohttp)。解析:静态 HTML 不用 Selenium;5 万条量大,Scrapy 异步并发+去重+流水线最合适;requests+BS4 串行太慢。

2.(概念题)为什么爬动态页面时 HTML 里找不到数据?

查看答案

答案:数据靠 JS 在浏览器里异步加载,requests 拿到的只是骨架 HTML。要么找后端 JSON 接口,要么用 Selenium/Playwright 等 JS 渲染完。

3.(概念题)爬了一半被封 IP,你会怎么排查?

查看答案

答案:先看状态码:403/429 是被限。降速、加随机间隔、换 UA、加代理。确认是不是频率太高触发了风控。

4.(代码题)用 aiohttp 爬 100 个 URL,怎么限制同时最多 10 个?

查看答案

答案:sem = asyncio.Semaphore(10),每个任务 async with sem: 里发请求,再 asyncio.gather(*tasks)。

5.(思考题)"爬虫写得好,牢饭吃到老"——哪些数据绝对不能爬?

查看答案

答案:个人信息(身份证/手机号/住址)、登录墙后数据、版权全文、robots.txt 明确 Disallow 的、给服务器造成压力的高频请求。爬之前先问"这数据公开吗?我爬了会损害谁?"

下
下一步去哪

① 动手:用 requests+BS4 把豆瓣 Top250 爬下来存 CSV。

② 提速:把它改成 aiohttp 异步版,看提速多少。

③ 工程化:用 Scrapy 重写一遍,体会流水线。

④ 进阶:找个动态渲染的电商站,用 Playwright 爬。

记住:爬虫是工具,不是目的。爬数据是为了分析,别光顾着爬忘了用。

下一站:去 tech-python-ai.html,学怎么用 Python 做 AI 数据科学。

记住:爬虫写得好,牢饭吃到老。技术要过硬,法律更要守。

三个月学习路线

阶段学什么
第1-2周requests + BS4,爬静态网页,存 CSV/JSON
第3-4周lxml XPath、正则、JSON 接口,爬新闻站
第5-6周Selenium/Playwright,爬动态页面,模拟登录
第7-8周Scrapy 框架,写工程化爬虫,Pipeline 存数据库
第9-10周aiohttp 异步爬虫,并发提速
第11-12周反爬应对、分布式、数据清洗,做个完整项目