NoIndex
date
Jan 22, 2025
icon
password
Featured
Evergreen
LastVerified
synced
synced
paired_with
3551d487-a2a1-8142-beef-e8f5086de1f0
RedirectFrom
UpdateType
NotificationPolicy
TechVersions
type
Post
Series
category
技术分享
NotificationVersion
source_hash
md:v1:ca10b990a004e943affa623a8405ba72dc30d40e1ca90f150138cf9f5d692af9
slug
爬虫技术入门
RelatedProjects
translation_locked
translation_locked
status
Published
summary
robots.txt 和数据使用边界。了解 requests、aiohttp、Scrapy、Playwright 等梳理爬虫工具选择。反爬、解析和数据质量的实战经验。
tags
工具
开发
NotifyAt
ContentType
从初中写下第一个爬虫程序开始,从最早抓 Reddit 帖子,到后来抓股价、抓课程、抓 GitHub Trending,工具也从 requests 一路换到 Scrapy 再到 Playwright,我想讲讲我自己一路用过的几样工具和他们各自适合的场景。
合规性
写爬虫之前,先看 robots.txt。
robots.txt 不是法律,不遵守它不会被起诉。但关键是网站愿不愿意配合你的信号,你不尊重它,对方就会使出手段。那些手段比 robots.txt 烦得多,IP 封禁、加验证码、加 JS 加密、加风控规则,每一项都够你折腾几天。
还有一条,爬来的数据怎么用?爬公开页面拿来分析自己看一般没事,转手卖、用来训练模型、绕开付费墙这些行为可能踩法律红线。
用过的一些工具
在不同的场景我会用不同的工具,简单分为三档。
第一档 requests + BeautifulSoup。一段代码就能把网页解析出来。
第二档,要并发。aiohttp + asyncio。同时拉几百个 URL 不阻塞。
第三档,工程化。Scrapy。带调度器、去重、管道、中间件。一个抓取任务能跑几天,断点恢复、限速、写入数据库这些都内置好了。
如果页面是 SPA、内容靠 JS 渲染才出现,这三个都不行,得上无头浏览器。我现在偏 Playwright 多一些,比 Selenium 快,API 也更现代,更容易作为MCP接入AI系统。
关于反爬
被网站发现你是爬虫之后,一般会按这个顺序拦你。
- 看 UA。默认 requests 的 UA 就长得像爬虫,需要第一时间换成浏览器的 UA 字符串
- 看 IP 频率。同一个 IP 短时间内打太多次,封。解法是放慢速度(最简单)或者上代理池(贵但管用)
- 看 Cookie / Session。要登录的页面,开个
requests.Session()把登录态保住
- 上验证码。强行硬刚成本极高,OCR 加打码平台一套下来不如直接放弃。不过随着AI视觉能力的发展,网站也需要推出越来越复杂困难的验证码才能防住爬虫。
代理池写起来不难,难的是养出可用的代理。免费代理基本不可用,付费代理几十块一天起步。
解析
抓取回来的 HTML 怎么提数据,主要有这几种。
- BeautifulSoup。最容易上手,写起来像 jQuery
- lxml + XPath。快、稳,结构复杂的页面用它
- PyQuery。jQuery 语法的 Python 实现,写过前端的容易上手
- 正则。能不用就不用。HTML 是树形结构,强行用正则解析容易翻车
我一般使用 lxml + XPath,配 Scrapy 用顺手。简单的task直接用 BeautifulSoup。
📎 参考文章
相关文章
继续关注
通过开放 Feed 获取新文章、研究和重要更新。
- 作者:LeoQin
- 链接:https://leoqin.com/article/%E7%88%AC%E8%99%AB%E6%8A%80%E6%9C%AF%E5%85%A5%E9%97%A8
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。