你笔记本上的一个爬虫没问题,直到你在中途关掉它、你的家庭 IP 被限速、或者你想让同一个任务每小时跑一次、无论你醒着与否。把它搬到一台 VPS 上把这三样都修好:它 7×24 在线、不烧你家庭 IP 的声誉,cron 或一个 systemd timer 不用你就按时跑它。这是怎么搭它、你实际需要多大的服务器,以及多数指南悄悄跳过的部分。
为什么这件事 VPS 胜过你的机器
- 7×24 且定时。 一个每小时跑的爬虫需要一个始终在线的宿主。笔记本不是。
- 你的家庭 IP 保持干净。 从家里抓,意味着你的住宅 IP 承受限速和封禁。从一台服务器做,你自己的连接毫发无损。
- 稳定。 不睡眠、爬取中途不掉 wifi、一条稳定的数据中心连接,以及一个积累结果的地方。
技术栈,以及每一部分需要什么
两个非常不同的重量级,选错套餐会浪费钱或饿着任务:
- httpx / requests(Python) —— 用于 API、JSON 端点和静态 HTML。这很轻:进程只占几十兆、绑网络、不绑 CPU。一台 $3 Nano(2 vCPU / 1 GB) 跑这个很舒服,即便通过
asyncio并发。 - Playwright / 无头 Chromium —— 用于需要真实浏览器的 JavaScript 渲染站点。这是重的那个。无头 Chromium 大约每个浏览器实例 300–400 MB,加上每个打开的上下文/标签页 100–200 MB,再加你的运行时。预算:
- $5 Micro(2 vCPU / 2 GB) —— 一次一两个浏览器上下文。
- $8 Small(4 vCPU / 4 GB) —— 好几个并行上下文,或更重的页面。
经验法则:你的代码几乎从不是瓶颈——Chromium 才是。按浏览器配置,不是按爬虫。
调度:systemd timer 胜过 cron
cron 能用,但在一台你维护的服务器上 systemd timer 是更好的默认:经 journalctl 的日志、机器宕机后的补跑、可检查的每次运行状态。一个极简配置:
# /etc/systemd/system/scrape.service
[Unit]
Description=Run scraper
[Service]
Type=oneshot
User=scraper
WorkingDirectory=/home/scraper/job
ExecStart=/home/scraper/job/venv/bin/python scrape.py
# /etc/systemd/system/scrape.timer
[Unit]
Description=Hourly scrape
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now scrape.timer
journalctl -u scrape.service -f # 看运行
Persistent=true 是 cron 做不到的那点:如果服务器在运行时刻是关的,任务会在开机时补跑一次,而不是悄悄跳过。
结果放哪
保持简单、匹配体量:SQLite 给你会查询的结构化数据(一个文件、零配置)、CSV 给快速的表格导出、或一个 S3 兼容对象存储 当结果长过机器、或你想让它们离开服务器时。轮转你的日志(logrotate 或 journald 限额),好让一个话痨爬虫不会慢慢填满磁盘。
诚实的部分:出口 IP 和声誉
这是决定你的爬虫工作一周、还是第一天就被封的细节。
在 NAT 套餐上,出站流量跟其他客户共享一个出口 IP。 那个 IP 的声誉是共享的——一个抓同一个目标的邻居能在你发出一个请求之前就让这地址被限速。对轻度、偶尔的抓取没问题;规模一大就是个隐患。
一个独立 IP 给你自己的出口声誉——别人的行为不影响它。但它是双刃的:激进抓取烧的是你自己的干净 IP,一旦目标封了它,它就被封了。独立 IP 是掌控,不是豁免。
到了真正的规模,你需要外部代理池。 没有哪个单一 IP——共享或独立——能把负载分摊到很多地址上,而那正是对按 IP 限速目标做正经抓取所要求的。代理是你在上面加的一个通用的第三方层;VPS 跑爬虫,代理池提供地址。别指望一个服务器 IP 干代理池的活。
伦理和 AUP——不是可选项
抓取活在一个法律和伦理的灰色地带,所以要清醒:
- 尊重速率限制和 robots.txt。 给你的请求节流。一个有礼貌的爬虫看起来像流量;一个没礼貌的看起来像攻击。
- 别对你的目标 DoS。 猛打一个站点直到它倒下不是抓取,是拒绝服务——在这里也是一个导致服务被终止的可接受使用政策违规。
- 只抓你被允许抓的。 合法、被许可的数据采集是那条线。越过它,责任在你。
一句话
VPS 是爬虫对的家:始终在线、定时、离开你的家庭 IP。让套餐配技术栈——httpx 用 $3 Nano,Playwright 用 $5 Micro 到 $8 Small——用 systemd timer 调度,并对 IP 诚实:共享出口共享声誉、独立 IP 由你来建或烧、真正的规模意味着代理池。先用新 VPS 安全清单锁死机器、用 VPS 配置指南配对尺寸,如果不用卡付款的隐私对你重要,匿名 VPS 拆解是诚实的版本。负责任地抓——AUP 是真的。
评论
暂无评论。来做第一个吧。