“爬虫”(Web Crawler)这个名字来源于英语中的 “crawl”,意思是“爬行”。比喻网络爬虫像蜘蛛一样在互联网上“爬行”,逐个网页扒取数据,也被称为 “Spider(蜘蛛)”。
上世纪 90 年代初,互联网刚刚兴起,网页数量飞速增长,为了建立搜索引擎,必须自动抓取网页内容并进行索引。网络爬虫程序最早诞生于 1993 年。早期的网络爬虫主要用于收集网页统计信息和构建搜索引擎索引。随着 WEB 的发展,现代爬虫可以执行网页的可访问性和安全性检查、模拟用户交互等功能
最开始我是用爬虫来抓取静态数据页面,所以用 Python 写了个小脚本。
实现:通过入口 url 扒取特定 HTML 内容并保存在本地,提取页面内 URL 作为下一次抓取的 URL。适用:简单的 blog 系列
1 | import time |
运行环境是 python 版本 小于 python3.12。
这个脚本只适用于静态页面,对于 JS 动态生成,会获取不到,可以使用 支持 JS 渲染的工具,如:
- selenium。模拟浏览器,任何复杂网页,稳定但稍慢
- Playwright。现代自动化框架,更快、稳定
- requests-html。轻量但功能有限,依赖较多
实现:使用 playwright 模拟浏览器访问,
1 | from playwright.sync_api import sync_playwright |
注意,如果爬虫请求太频繁,会被服务器限流或临时封禁。
选择应对的方式有:
- 降低请求频率,每次请求之间增加延迟(随机等待更好),模拟人类行为,即
time.sleep(num) - 添加 headers(特别是 User-Agent)
- 使用代理 IP。这个是被封禁 IP 下的措施