Scrapy Python 教程:网页爬取实战指南

最后更新于 May 25, 2026
Scrapy Python 教程:网页爬取实战指南

让我带你回到第一次尝试从电商网站抓取商品数据的时候。那时我手里有 Python、一杯咖啡,还有一个梦想:做一个亚马逊价格追踪器。几个小时过去后,我原本以为“很快就能搞定”的小项目,已经变成了 XPath 选择器、分页处理和一堆调试问题搅在一起的烂摊子。如果你曾经用代码处理网页数据,大概率会懂这种感觉——既让人兴奋,又忍不住想问:“为什么这事这么复杂?”

问题在于:网页爬取早就不只是数据科学家或工程师的专属技能了。它已经成了销售团队、电商经理、市场人员,以及任何想把网页上的零散信息转成商业洞察的人都需要掌握的能力。实际上,网页爬取软件市场在 2024 年达到 10.1 亿美元,预计到 2032 年将增长至 24.9 亿美元,而且这个增长曲线还没停下来。只是,虽然 Python 和 Scrapy 这类框架依然是大规模、定制化爬取的黄金标准,但它们对新手并不算友好。所以,在这篇教程里,我会用一个真实的亚马逊案例,带你一步步了解 Scrapy——同时也会介绍一个对非程序员更简单的 AI 方案:Thunderbit

什么是 Scrapy Python?你的网页爬取利器

先从基础说起。Scrapy 是一个专门为网页抓取和爬取而生的开源 Python 框架。你可以把它理解成一个一体化工具箱,用来搭建自定义爬虫(Scrapy 把它们叫做 spider),让它们自动浏览网站、跟随链接、处理分页,并在大规模场景下提取结构化数据。

Scrapy 和直接用 Python 的 requestsBeautifulSoup 有什么区别?简单来说,这两个库很适合简单、一次性的抓取任务,而 Scrapy 则是为 大型、复杂项目 设计的,尤其适合你需要:

  • 爬取成千上万的页面(比如一个电商目录里的每个商品)
  • 自动跟随链接并处理分页
  • 通过异步方式处理数据,以提升速度
  • 以可重复的方式组织、清洗和导出数据

总之,Scrapy 就像网页爬取界的瑞士军刀——强大、灵活,但对新手来说多少有点让人望而生畏。

为什么要用 Scrapy Python 做网页爬取?

那为什么开发者和数据团队总是会选 Scrapy?下面简单看看它的优势:

使用场景Scrapy 优势商业价值
价格监控处理分页、异步请求、定时任务抢先了解竞品、动态定价
商品目录提取跟随链接、提取结构化数据建立商品数据库,支持分析
竞品分析可扩展,对网站变化更稳健跟踪趋势、新品、库存水平
市场调研用模块化管道清洗/转换数据汇总评论,做情感分析

Scrapy 的 异步引擎(基于 Twisted 构建)意味着它可以并行抓取多个页面,所以速度快、扩展性强。它的 模块化设计 让你可以插入自定义逻辑,比如代理、请求头,或者数据清洗步骤。而借助 管道,你可以按自己想要的方式处理、校验和导出数据——CSV、JSON、数据库,随你选。

对会 Python 的团队来说,Scrapy 是个很强的工具。但说实话,它并不适合普通业务用户直接上手。

Scrapy 1.jpeg

搭建 Scrapy Python 环境

准备动手了吗?下面教你从零开始搭建 Scrapy:

1. 安装 Scrapy

首先,确认你已经安装了 Python 3.10+(Scrapy 2.15.x 在 2026 年停止支持 3.9)。然后打开终端并运行:

pip install scrapy

用下面的命令检查是否安装成功:

scrapy version

如果你用的是 Windows 或 Anaconda,最好先创建一个虚拟环境,避免依赖冲突。Scrapy 支持 Windows、macOS 和 Linux。

2. 创建新的 Scrapy 项目

我们先创建一个名为 amazonscraper 的新项目:

scrapy startproject amazonscraper

你会得到类似这样的文件结构:

amazonscraper/
├── scrapy.cfg
├── amazonscraper/
│   ├── __init__.py
│   ├── items.py
│   ├── pipelines.py
│   ├── middlewares.py
│   ├── settings.py
│   └── spiders/

这些文件分别做什么?

  • scrapy.cfg:项目配置文件(一般很少需要改)
  • items.py:定义数据模型(比如包含名称、价格等字段的 Product)
  • pipelines.py:清洗、校验和导出数据的地方
  • middlewares.py:高级功能(代理、自定义请求头)
  • settings.py:调整 Scrapy 的行为(并发数、延迟等)
  • spiders/:放你真正的爬取逻辑

如果你已经开始觉得有点晕,那你并不孤单。很多非程序员就是在这里开始头疼的。

用 Python 爬虫抓取亚马逊商品数据:Scrapy 实战

我们来做一个真实案例:抓取亚马逊搜索结果中的商品数据。(提醒一下:亚马逊的服务条款并不允许抓取,而且它的反爬措施也很强。以下内容仅用于教学!)

1. 创建爬虫

spiders/ 文件夹里,新建一个名为 amazon_spider.py 的文件:

import scrapy

class AmazonSpider(scrapy.Spider):
    name = "amazon_example"
    allowed_domains = ["amazon.com"]
    start_urls = ["https://www.amazon.com/s?k=smartphones"]

    def parse(self, response):
        products = response.xpath("//div[@data-component-type='s-search-result']")
        for product in products:
            yield {
                'name': product.xpath(".//span[@class='a-size-medium a-color-base a-text-normal']/text()").get(),
                'price': product.xpath(".//span[@class='a-price-whole']/text()").get(),
                'rating': product.xpath(".//span[@aria-label]/text()").get()
            }
        next_page = response.xpath("//li[@class='a-last']/a/@href").get()
        if next_page:
            yield scrapy.Request(url=response.urljoin(next_page), callback=self.parse)

这里发生了什么?

  • 我们从亚马逊搜索结果页开始,搜索关键词是“smartphones”。
  • 对每个商品,我们用 XPath 选择器提取名称、价格和评分。
  • 然后查找“下一页”链接,并让 Scrapy 继续跟进,抓取更多商品。

2. 运行爬虫

在项目根目录下运行:

scrapy crawl amazon_example -o products.json

搞定——Scrapy 会抓取搜索结果、自动翻页,并把数据保存到 JSON 文件中。

处理分页和动态内容

Scrapy 内置的链接跟随和分页处理能力,是它的一大杀手锏。但如果页面内容是动态加载的,比如通过 JavaScript 加载的数据怎么办?默认情况下,Scrapy 只能看到静态 HTML。如果你需要抓取 JavaScript 渲染的内容(比如无限滚动或弹窗评论),就得把它和 Selenium 或 Splash 之类的工具结合使用了。这又是另一个大坑。

使用 Scrapy Python 处理和导出数据

抓完数据之后,你大概率还想把它清洗一下,再导出到有用的地方。

  • 管道(Pipelines):在 pipelines.py 里,你可以写 Python 类来清洗、校验或丰富数据,比如把价格转成数字、删除不完整的行,甚至调用翻译 API。
  • 导出:Scrapy 可以通过 o 参数直接导出为 CSV、JSON 或 XML。如果你要做更复杂的导出,比如直接推送到 Google Sheets,就需要额外写代码或者使用第三方库。

想做情感分析,或者翻译商品描述?那就得接外部 API 或 Python 库——这些都不是内置功能。

隐藏成本:Scrapy Python 对业务用户的挑战

说实话:Scrapy 很强,但对非开发者来说并不算友好。最常卡住业务用户的地方包括:

  • 学习曲线陡峭:你需要懂 Python、HTML、XPath/CSS 选择器,以及 Scrapy 的项目结构。上手可能要几天甚至几周。
  • 环境配置麻烦:安装 Python、管理依赖、排查报错都很费劲,尤其是在 Windows 上。
  • 没有可视化界面:一切都靠代码。你不能直接在页面上“点一下”来选数据。
  • 维护成本高:网站一改版,你的爬虫就可能坏掉,还得你来修。
  • 没有内置 AI:想翻译、摘要或做情感分析?都得额外写代码。

Scrapy 2.jpeg

下面是一个快速对比:

挑战Scrapy(Python)业务用户需求
需要编程更希望无代码
配置时间数小时(或数天)几分钟
维护成本持续(网站变化)尽量少
数据导出CSV/JSON(需手动集成)直接导出到 Excel/Sheets/Notion
AI 功能没有(需自行集成)内置翻译/情感分析

如果你是独立营销人员、销售代表或运营经理,Scrapy 可能会让你感觉像拿着火箭筒打气球。

认识 Thunderbit:Scrapy Python 的无代码替代方案

这就是 Thunderbit 的用武之地。作为一个多年从事自动化工具开发的人,我可以很直接地说:大多数业务用户并不想写代码,他们只想快点拿到数据。

Thunderbit 是一款 AI 网页爬虫,以 Chrome 扩展的形式提供。它专为非技术用户设计,适合那些想要:

  • 几次点击就抓取任意网站的数据
  • 用自然语言描述自己想要什么(比如“商品名称、价格、评分”)
  • 自动处理分页和子页面
  • 直接导出到 Excel、Google Sheets、Airtable 或 Notion
  • 即时翻译、摘要或分析情感倾向

不需要 Python。不需要选择器。也没有维护上的烦恼。

如何使用 AI 抓取任意网站 Get Started Free

Thunderbit 的目标用户就是那些想要 快速行动,并把繁琐工作交给 AI 的业务人员。

Thunderbit 与 Scrapy Python:并排对比

我们直接放在一起比较:

维度Scrapy(Python)Thunderbit(AI 工具)
所需技能Python、HTML、选择器不需要——点选即可,自然语言即可
配置时间数小时(安装、编写、调试)几分钟(安装 Chrome 扩展、登录)
数据结构化手动(定义 items、pipelines)AI 自动识别列并建议字段
分页/子页面需要写代码一键处理(AI 自动完成)
翻译自定义代码或 API 集成内置——只需切换“翻译”
情感分析外部库/API内置——添加“情感”列即可
导出选项CSV/JSON(需手动导入 Sheets/Excel)一键导出到 Excel、Google Sheets、Airtable、Notion
维护手动(网站变化时更新代码)AI 会自动适应轻微的网站变化
规模最适合大型、持续性项目最适合快速任务、中等规模(数百/数千行)
成本免费(但会消耗时间/开发资源)有免费版 + 付费方案(起价每月 9 美元,但能省下大量时间和麻烦)

什么时候选 Scrapy Python,什么时候选 Thunderbit 做网页爬取?

我的经验法则是这样的:

  • 适合用 Scrapy 的情况:
    • 你是开发者,或者团队里有开发者
    • 你需要抓取上万页,或者搭建一个自定义、持续运行的数据管道
    • 网站结构非常复杂,或者需要高级逻辑处理
    • 你想完全掌控一切,而且不介意维护
  • 适合用 Thunderbit 的情况:
    • 你不会写代码,或者根本不想写
    • 你需要尽快拿到数据,用于一次性或周期性的业务任务
    • 你希望内置翻译、情感分析或数据增强功能
    • 你更看重速度和灵活性,而不是极致的自定义能力

Scrapy 3.jpeg

下面是一个简单的决策流程:

  1. 你会写 Python 吗?
    • 会 → Scrapy 或 Thunderbit(如果想快速见效)
    • 不会 → Thunderbit
  2. 你的项目是否庞大且持续进行?
    • 是 → Scrapy
    • 否 → Thunderbit
  3. 你需要翻译或情感分析吗?
    • 需要 → Thunderbit
    • 不需要 → 两者都可以

分步演示:用 Thunderbit 抓取亚马逊商品数据(无需编程)

我们把刚才的亚马逊案例重做一遍——这次用更简单的方式。

1. 安装 Thunderbit

免费试用 Thunderbit Chrome 扩展

2. 打开亚马逊并搜索你的商品

  • 打开 Amazon.com,搜索“laptops”(或任意商品)

3. 在页面上启动 Thunderbit

  • 点击浏览器里的 Thunderbit 图标
  • 侧边栏会打开,并识别当前的亚马逊页面

4. 使用 AI 推荐字段

  • 点击 “AI Suggest Fields”
  • Thunderbit 的 AI 会扫描页面,并推荐“商品名称”“价格”“评分”“评论数”等列
  • 你可以按需增删列(想要“商品链接”或“Prime 资格”?直接输入即可)

5. 启用分页和子页面抓取

  • 打开 分页:Thunderbit 会自动点击“下一页”,抓取所有页面
  • 打开 子页面抓取:Thunderbit 会访问每个商品详情页,并提取额外信息(比如描述或 ASIN 编号)

6. 开始抓取

  • 点击 抓取
  • 看着 Thunderbit 实时按页收集数据

7. 翻译并分析情感倾向(可选)

  • 想翻译商品描述?为该列打开“翻译”即可
  • 想分析评论情感?添加一个“情感”列——Thunderbit 的 AI 会自动填充

8. 导出数据

  • 点击 导出
  • 选择 Excel、Google Sheets、Airtable 或 Notion
  • 你的数据即可直接使用——无需手动导入,也不用折腾 CSV

9. 设置定时抓取(可选)

  • 设置计划任务(例如每天早上 8 点)
  • Thunderbit 会自动运行抓取,并更新到你选择的目标位置

就这么简单。无需代码,无需选择器,也无需维护。只有可直接用于业务的数据。

进阶建议:让你的网页爬取项目发挥更大价值

无论你用的是 Scrapy、Thunderbit 还是其他工具,下面这些最佳实践都是我踩过坑之后总结出来的:

  • 校验数据:始终检查是否存在缺失值或异常值(比如 $0 价格或空名称)
  • 遵守合规要求:查看网站服务条款,尊重 robots.txt,不要给服务器造成过大压力
  • 聪明地自动化:可以用定时任务保持数据更新,但不要比实际需要更频繁地抓取
  • 善用免费工具:Thunderbit 内置免费的邮箱、电话和图片提取器,非常适合获客或内容整理
  • 便于分析地组织数据:直接导出到 Sheets/Excel,这样你就能快速筛选、透视和可视化

想了解更多技巧,可以看看 Thunderbit 的博客 或他们的 AI 抓取任意网站指南

如何使用 AI 将网站数据抓取到 Excel Get Started Free

想了解更多技巧,可以看看 Thunderbit 的博客 或他们的 AI 抓取任意网站指南

结论:让网页爬取更简单——为你的团队选对工具

结论很明确:Scrapy 对开发者来说是强大工具,但对大多数业务用户来说有点杀鸡用牛刀。 如果你熟悉 Python,并且需要构建一个自定义的大规模爬虫,Scrapy 是个很好的选择。但如果你想更快推进、跳过代码,并且直接拿到带翻译和情感分析的数据,Thunderbit 会更合适。

我亲眼见过 Thunderbit 如何帮非技术团队省下大量时间和精力。你可以在几分钟内,从“我希望我有这些数据”变成“它已经在我的表格里了”——而不是等上几个小时或几天。再加上 AI 推荐字段、子页面抓取和一键导出这些功能,把网页变成商业洞察从未这么容易过。

所以下次你需要抓取商品数据、监控价格,或者建立潜在客户名单时,不妨问问自己:你是想写 Python,还是想直接拿结果?试试 Thunderbit 的免费版,看看网页爬取到底能有多简单。

免费试用 Thunderbit

想了解更多?欢迎查看 Thunderbit 官方网站下载 Chrome 扩展,或在 Thunderbit 博客 深入了解网页爬取最佳实践。

延伸阅读:

免责声明:请始终确保你的网页爬取活动符合网站条款和当地法律。如有疑问,请咨询法律顾问——没人想因为一张表格就收到律师函,成了那个被点名的“爬虫”。

由 Thunderbit 联合创始人兼 CEO Shuai Guan 撰写。我在 SaaS、自动化和 AI 领域摸爬滚打多年——这样你就不用再自己踩坑了。

试用 AI 网页爬虫 Get Started Free

Shuai Guan
Shuai Guan
Thunderbit 首席执行官|AI 数据自动化专家 Shuai Guan 是 Thunderbit 的首席执行官,也是密歇根大学工程学院校友。凭借近十年的科技与 SaaS 架构经验,他专注于将复杂的 AI 模型转化为实用、免代码的数据提取工具。在本博客中,他分享自己经过实战检验、毫无保留的网页爬取与自动化策略,帮助您构建更智能、以数据为驱动的工作流。当他不在优化数据流程时,也会将同样的细致投入到摄影爱好中。
Topics
Scrapy PythonPython 爬虫Scrapy 教程

试试 Thunderbit

只需 2 次点击即可采集潜客和其他数据,AI 驱动。

获取 Thunderbit 它是免费的
使用 AI 提取数据
轻松将数据传输到 Google Sheets、Airtable 或 Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week