Scrapy:Python 写爬虫,用这个框架就够了

Scrapy 在 GitHub 上拿到 62K Star 了。

一个 Python 爬虫框架,从 2008 年开始维护到现在,整个 Python 爬虫生态几乎都围着它转。Zyte 公司(前身是 Scrapinghub)牵头维护,社区贡献者超过 600 人。支持 Python 3.10 及以上版本,Ubuntu、macOS、Windows 三个平台都能跑。

正文顶部截图

1、它是干嘛的

一句话:从网站上批量抓取结构化数据的 Python 框架。

你给它一个起始 URL,它自动跟进链接、解析页面、提取你要的字段,最后把数据存成 JSON、CSV 或者直接写数据库。支持 CSS 选择器和 XPath 两种提取方式,碰到需要登录的页面也有内置的认证机制。底层用 Twisted 异步网络库驱动,抓取速度比你自己用 requests 写循环快得多。

2、为什么是它

Python 爬虫方案很多,requests + BeautifulSoup 组合也能干活。但一旦你的需求从"抓一个页面"变成"抓一整个站",问题就来了。

URL 去重怎么做?并发控制怎么写?碰到反爬怎么应对?数据管道怎么清洗和存储?异常页面怎么处理?中间件怎么插?每一个环节单独写代码不难,但串成一套稳定的系统很费劲。写到一半发现要重构,重构完发现又漏了什么,这种经历做过爬虫的人都不陌生。

Scrapy 把这些全做好了。它有一套成熟的架构:Spider 定义抓取逻辑,Middleware 处理请求和响应的加工,Pipeline 负责数据清洗和存储。你要做的就是在 Spider 里写选择器,定义你要抓什么字段。

README区域截图

3、上手有多快

安装:

pip install scrapy

建一个项目:

scrapy startproject myproject
cd myproject
scrapy genspider example example.com

写一个最简单的 Spider:

import scrapy

class ExampleSpider(scrapy.Spider):
    name = "example"
    start_urls = ["https://example.com"]

    def parse(self, response):
        for title in response.css("h2::text").getall():
            yield {"title": title}

跑起来:

scrapy crawl example -o output.json

四步走完,数据就出来了。

4、哪些场景适合用

需要定时、批量抓取数据的场景,Scrapy 都是首选。电商价格监控、新闻聚合、学术数据采集、SEO 分析,这些常见需求它都能覆盖。很多公司的数据采集底层都跑着 Scrapy,稳定性和性能经过了大量生产环境的验证。

如果只是临时抓几个页面,requests + BeautifulSoup 够用。但如果要抓几千上万页,需要并发、断点续爬、去重、数据管道这些能力,直接上 Scrapy。它的命令行工具也很好用,scrapy shell 可以直接在终端里测试选择器,写爬虫调试的时候省很多时间。

5、生态和扩展

Scrapy 生态很完整。Scrapy-Splash 处理 JavaScript 渲染页面,Scrapy-Redis 支持分布式爬取,Scrapyrt 把爬虫暴露成 HTTP API,Items Pipeline 支持导出到 MongoDB、MySQL、Elasticsearch 等主流存储。还有 Scrapy-Playwright,用 Chromium 内核处理现代前端框架渲染的页面,比 Splash 更稳定。

Zyte 还提供了 Scrapy Cloud,一条命令把爬虫部署到云端,不用自己管服务器。需要处理 JS 渲染的话,配合 Playwright 或 Splash 都可以。反爬对抗方面,中间件层支持代理轮换、UA 切换、Cookie 管理,该有的都有。

Scrapy 的文档写得也不错,官网 docs.scrapy.org 覆盖了从入门到高级用法的全部内容,中文社区也有不少教程和实战分享,遇到问题不难找到解决方案。

的文档写得也不错,官网 docs.scrapy.org 覆盖了从入门到高级用法的全部内容,中文社区也有不少教程和实战分享,遇到问题不难找到解决方案。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐