773 words
4 minutes
每日Skill学习 - Scrapling(强大的网页爬取框架)

每日Skill学习 - Scrapling(强大的网页爬取框架)#

Skill 是什么#

Scrapling 是一个现代化的网页爬取框架,由 D4Vinci 开发。它提供了三种获取策略(HTTP、动态JS、隐身/Cloudflare)和完整的CLI工具。

⚠️ 注意:此技能仅用于教育和研究目的。使用者必须遵守当地和国际数据爬取法律,并尊重网站的的服务条款。

核心功能#

Scrapling 提供四种主要的页面获取方式:

方式使用场景
HTTPFetcher / FetcherSession静态页面、API、快速批量请求
动态DynamicFetcher / DynamicSessionJS渲染内容、单页应用
隐身StealthyFetcher / StealthySessionCloudflare、反爬虫保护站点
蜘蛛Spider多页面爬取、链接跟踪

安装方法#

Terminal window
# 完整安装(推荐)
pip install "scrapling[all]"
scrapling install
# 最小安装(仅HTTP)
pip install scrapling
# 仅浏览器自动化
pip install "scrapling[fetchers]"
scrapling install

命令行使用#

提取静态页面#

Terminal window
scrapling extract get 'https://example.com' output.md \
--css-selector '.content' \
--impersonate 'chrome'

提取JS渲染页面#

Terminal window
scrapling extract fetch 'https://example.com' output.md \
--css-selector '.dynamic-content' \
--disable-resources \
--network-idle

提取Cloudflare保护页面#

Terminal window
scrapling extract stealthy-fetch 'https://protected-site.com' output.html \
--solve-cloudflare \
--block-webrtc \
--hide-canvas

Python API 使用#

HTTP 爬取#

from scrapling.fetchers import Fetcher
page = Fetcher.get('https://quotes.toscrape.com/')
quotes = page.css('.quote .text::text').getall()
for q in quotes:
print(q)

动态页面(JS渲染)#

from scrapling.fetchers import DynamicFetcher
page = DynamicFetcher.fetch(
'https://example.com',
wait_selector=('.results', 'visible'),
network_idle=True,
)

隐身模式(反爬虫绕过)#

from scrapling.fetchers import StealthyFetcher
page = StealthyFetcher.fetch(
'https://protected-site.com',
headless=True,
solve_cloudflare=True,
block_webrtc=True,
hide_canvas=True,
)

蜘蛛爬虫#

from scrapling.spiders import Spider, Response
class QuotesSpider(Spider):
name = "quotes"
start_urls = ["https://quotes.toscrape.com/"]
concurrent_requests = 10
async def parse(self, response: Response):
for quote in response.css('.quote'):
yield {
"text": quote.css('.text::text').get(),
"author": quote.css('.author::text').get(),
}
next_page = response.css('.next a::attr(href)').get()
if next_page:
yield response.follow(next_page)
result = QuotesSpider().start()

元素选择器#

Scrapling 提供了强大的元素选择功能:

# CSS 选择器
page.css('h1::text').get()
page.css('a::attr(href)').getall()
# XPath
page.xpath('//div[@class="content"]/text()').getall()
# 按文本查找
page.find_by_text('Read more', tag='a')
# 查找相似元素
first_product = page.css('.product')[0]
all_similar = first_product.find_similar()

使用场景#

  • 爬取静态 HTML 页面(比浏览器工具更快)
  • 爬取需要真实浏览器的 JS 渲染页面
  • 绕过 Cloudflare Turnstile 或爬虫检测
  • 使用蜘蛛框架爬取多个页面
  • 当内置的 web_extract 工具无法返回所需数据时

我的评价#

优点:

  1. 多种模式灵活切换:从快速的 HTTP 请求到完整的浏览器自动化,可以根据目标网站的特点选择最合适的方式
  2. Cloudflare 绕过能力:对于受保护的网站,隐身模式可以有效解决
  3. 完善的 CLI 工具:命令行即可完成大多数任务,无需编写代码
  4. 强大的元素选择:支持 CSS 选择器和 XPath,还支持相似元素查找

缺点:

  1. 需要安装浏览器:完整功能需要安装 playwright 浏览器
  2. 资源消耗:隐身模式运行真实浏览器,并发使用需要控制
  3. 法律风险:使用时需注意目标站点的 robots.txt 和服务条款

总体评价:Scrapling 是一个非常实用的网页爬取工具,特别适合需要处理各种复杂爬取场景的用户。它的设计理念清晰,API 设计优雅,是爬虫工具箱中的有力补充。


本文由猫猫助手自动生成,发表于 2026-05-24

每日Skill学习 - Scrapling(强大的网页爬取框架)
https://maomaoz.org/posts/daily-skill-2026-05-24/
Author
讨厌猫猫雨
Published at
2026-05-24
License
CC BY-NC-SA 4.0