Scrapling 零基础使用教程:不用写爬虫框架,几行命令就能把公开网页变成表格
分类:开发工具|难度:入门|类型:实操教程|软件:Scrapling
标签:开源、Python、网页抓取、爬虫、数据采集、免费|预计阅读:约 12 分钟
一、这是什么
Scrapling 是一个 Python 网页抓取框架,作者是 D4Vinci。它把“发请求、拿页面、解析字段、导出数据”这一整套流程装进一个库里:既能用一行命令直接把网页存成 Markdown 或文本,也能用几行 Python 代码抓取页面并导出 JSON、CSV,还能进一步写成可并发、可断点续跑的爬虫(Spider)。
它在 2026 年 11 月 2 日至 3 日登上 GitHub 当日热门榜单,核实时已有约 9.3 万个 star,许可证为 BSD-3-Clause。按第三方榜单统计,它在 11 月 2 日当天新增约 900 个 star,是当周数据采集类开源项目里涨得最快的一个。
它适合这些人:想把公开网页上的公开信息(比如练习站上的名言、公开商品目录)整理成表格做分析的人;学 Python 时想练一个“能跑通、能看到结果”的小项目的人;以及已经在用 Scrapy、BeautifulSoup,想换一个 API 更顺手的工具的人。
本教程只用官方文档里的公开练习站 quotes.toscrape.com 做演示,不涉及任何需要登录、付费或绕过防护的网站。
二、开始前确认
- 系统要求:需要 Python 3.10 或更高版本,支持 Windows、macOS、Linux。先在终端运行
python3 --version(Windows 上是python --version)确认版本号,低于 3.10 请先升级 Python。 - 安装方式的区别(很重要):只装
pip install scrapling的话,得到的是精简版本,README 明确提醒,此时再去导入scrapling.fetchers或scrapling.spiders会报ModuleNotFoundError。本教程要用到的抓取功能,所以要装带抓取依赖的版本,并随后运行浏览器安装命令。 - 网络:安装依赖、下载浏览器组件和访问练习站时需要联网;抓取完成后,整理本地文件不需要联网。
- 只抓公开、合规的数据:只抓取允许公开访问的页面,遵守目标网站的 robots.txt 和使用条款,不抓登录后内容、不抓个人隐私数据、不高频刷请求。本教程的 Spider 示例里就用到了 README 提到的
robots_txt_obey选项。 - 它不是万能钥匙:Scrapling 不帮你解决账号、验证码和付费墙问题;遇到需要登录或明确禁止抓取的网站,就不要继续。
三、操作步骤
步骤 1:安装 Scrapling 与浏览器组件
按顺序执行下面两条命令。第一条安装带抓取功能的版本,第二条下载浏览器组件(供抓取动态页面时使用,过程可能需要几分钟,耐心等它跑完):
pip install "scrapling[fetchers]"
scrapling install如果第二条命令因为网络中断而失败,可以按 README 给出的强制重装命令再跑一次:
scrapling install --force装完后做一次自检:在终端运行 scrapling --help,能正常打印出帮助信息,就说明命令行工具已经装好。

步骤 2:不用写代码,先用一行命令抓一个页面
Scrapling 自带命令行工具,不用写任何 Python 代码就能把页面存下来。先从最简单的开始,把公开练习站首页存成 Markdown:
scrapling extract get 'https://quotes.toscrape.com/' quotes.md跑完后当前目录会多一个 quotes.md 文件,用记事本或任意文本编辑器打开,就能看到首页的全部文字内容。
如果只要正文、不要导航栏和页脚,可以用 CSS 选择器圈定范围。练习站里每条名言都在 class 为 quote 的元素里:
scrapling extract get 'https://quotes.toscrape.com/' quotes.txt --css-selector '.quote' --impersonate 'chrome'这条命令把多出来的 --impersonate 'chrome' 参数也带上,让请求看起来更像普通浏览器,避免被目标站点的简单防护拦下。
遇到 JavaScript 渲染的动态页面(比如练习站的 /js/ 版本,内容要等脚本跑完才出现),把 get 换成 fetch,再加一个等待目标元素出现的参数:
scrapling extract fetch 'https://quotes.toscrape.com/js/' quotes.md --css-selector '.quote' --wait-selector '.quote'fetch 会启动一个真实的浏览器去打开页面,等 class 为 quote 的元素出现后再保存,专门对付动态内容。

步骤 3:写 5 行 Python 代码,抓取名言并打印
命令行够用了,但想把字段拆开(比如“名言内容”和“作者”分两列),就该写一点 Python。新建一个 first_scrape.py 文件,写入下面 5 行:
from scrapling.fetchers import Fetcher
page = Fetcher.get('https://quotes.toscrape.com/')
for quote in page.css('.quote'):
print(quote.css_first('.text').text, '——', quote.css_first('.author').text)运行 python first_scrape.py,终端会逐行打印出名言和作者。
这 5 行做了三件事:Fetcher.get() 发起请求并拿到页面;page.css('.quote') 按 CSS 选择器找出所有名言块;css_first('.text') / css_first('.author') 在每块里取出名言正文和作者名。
.css() 和 .css_first() 是 Scrapling 解析器的核心用法,也是 README 里反复出现的写法,学会这两个,页面上任何字段都能按同样的方式取出来。
步骤 4:写一个 Spider,把整站名言导出成 JSON
只抓一页不过瘾,想把练习站 10 页名言全部抓下来并存成 JSON,就用 Spider。新建 quotes_spider.py:
from scrapling.spiders import Spider
class QuotesSpider(Spider):
start_urls = ['https://quotes.toscrape.com/']
robots_txt_obey = True
async def parse(self, page):
for quote in page.css('.quote'):
yield {
'text': quote.css_first('.text').text,
'author': quote.css_first('.author').text,
'tags': quote.css('.tag').text,
}
next_page = page.css_first('li.next > a::attr(href)')
if next_page:
yield page.follow(next_page)
if __name__ == '__main__':
result = QuotesSpider().start()
result.items.to_json("quotes.json")运行 python quotes_spider.py,等它把 10 页跑完,当前目录就会生成 quotes.json,里面是结构化的名言数据。
几点说明:robots_txt_obey = True 让爬虫先读目标站的 robots.txt 再动手,这是合规抓取的基本动作;page.follow(next_page) 自动跟随“下一页”链接,实现翻页;最后 result.items.to_json("quotes.json") 把结果导出成 JSON;按 README 的说明,还可以换成 to_jsonl()、to_csv()、to_xml(),分别导出 JSONL、CSV、XML。
需要断点续跑长任务时,按 README 的办法,给 Spider 加上 crawlDir 参数,例如 QuotesSpider(crawlDir="./crawl_data").start(),中途按 Ctrl+C 会保存待抓链接和已见链接,下次用同一个目录启动就能继续。

四、恢复办法
Scrapling 只读写你指定的文件,不改动系统设置,遇到问题基本都能马上回到干净状态:
- 导入时报
ModuleNotFoundError:说明只装了解析器本体,没有装抓取依赖。重新运行pip install "scrapling[fetchers]",再运行scrapling install,然后重试。 - 命令行抓不到网页内容或为空:先检查网址有没有写错、网络是否正常;再试一次不带
--css-selector的基础命令,确认功能没坏,再逐步加回选择器定位问题。 - 动态页面下内容为空:把
extract get换成extract fetch,并配合--wait-selector等目标元素出现;如果还是不行,先确认该页面在浏览器里正常打开、且不需要登录。 - 想从头再来:直接删掉本教程生成的
quotes.md、quotes.txt、quotes.json、first_scrape.py、quotes_spider.py和crawl_data目录即可,不会影响其他 Python 项目。 - 不想用了:在终端运行
pip uninstall scrapling卸载即可;已经导出的 JSON、CSV 文件在你的电脑上,不会因为卸载而消失。
五、注意事项(必读)
- 先装带抓取功能的版本:
pip install scrapling只是解析器本体;要发请求、跑爬虫,必须装pip install "scrapling[fetchers]"并运行scrapling install,否则导入抓取模块会报错。 - 只抓公开合规的数据:遵守 robots.txt 和网站使用条款,不抓登录后内容、不抓个人隐私、不高频请求压垮对方服务器;Spider 示例里的
robots_txt_obey = True就是用来遵守 robots.txt 的开关。 - 选择器写错是常见的失败原因:先用不带选择器的抓取确认能跑通,再用浏览器开发者工具看清页面的类名(比如名言是
.quote、文字是.text),最后再加选择器。 - 动态页面用抓取命令而非静态命令:静态页面用
get,需要等 JavaScript 渲染的页面用fetch并配合--wait-selector;用错了容易抓到空页面。 - 导出格式按场景选:自己看结果用 JSON,给表格软件用 CSV,给其他程序对接用 JSONL 或 XML,导出函数分别是
to_json()、to_csv()、to_jsonl()、to_xml()。 - 它仍在快速迭代:接口和个别功能以后可能调整,遇到与本教程不一致的地方,以官方文档为准。
六、官方资源链接
- GitHub 项目:https://github.com/D4Vinci/Scrapling
- 官方文档:https://scrapling.readthedocs.io
- 官方 README(含安装、命令行与 Spider 示例):https://github.com/D4Vinci/Scrapling#readme
- 练习站(本教程演示用公开练习站):https://quotes.toscrape.com/
七、常见问题
Scrapling 是免费的吗?
是。项目采用 BSD-3-Clause 许可证,核心功能免费开源;README 里出现的代理等赞助商服务是可选的第三方服务,不用它们也能完成本教程的全部步骤。
只装 pip install scrapling 为什么导入抓取模块会报错?
因为这个命令只包含解析器本体,不含抓取器依赖。README 明确说明了这一点:要使用抓取器或爬虫,需安装 pip install "scrapling[fetchers]" 并运行 scrapling install。
没有编程基础能用吗?
能。从命令行入门:scrapling extract get <网址> <输出文件> 不用写代码就能把页面存下来;等熟悉了,再按步骤 3 写 5 行 Python 代码进阶。
支持哪些 Python 版本和系统?
需要 Python 3.10 或更高版本,支持 Windows、macOS、Linux。
抓取动态(JavaScript 渲染)页面怎么办?
用 fetch 而不是 get,并配合 --wait-selector 等目标元素出现;Python 代码里对应的就是 README 里的 StealthyFetcher / StealthySession 浏览器抓取方式。
导出成表格怎么做?
Spider 跑完后把 result.items.to_json("quotes.json") 换成 result.items.to_csv("quotes.csv"),就能用表格软件直接打开。
可以抓需要登录的网站吗?
不建议。本教程只演示公开练习站;需要登录、付费或明确禁止抓取的网站不要抓,合规边界以目标网站的条款为准。
