TL;DR

Scrapling là framework scraping Python mã nguồn mở, giải quyết 3 cơn đau kinh điển cùng một lúc: selector chết khi site update, bị block bởi Cloudflare, và tốc độ parse quá chậm. Phiên bản v0.4.7 hiện có 39.9k sao GitHub, bypass Cloudflare Turnstile mặc định, parser nhanh hơn BeautifulSoup 774 lần, và tích hợp MCP server để AI agents gọi trực tiếp.

  • Hoàn toàn miễn phí - BSD-3-Clause license
  • Python 3.10+, cài qua pip install scrapling[all]
  • GitHub: D4Vinci/Scrapling

Scraper truyền thống chết vì điều này

Nếu bạn đã scrape web một thời gian, bạn biết vòng lặp khổ này: site update layout nhỏ, CSS class đổi tên, một <div> dịch chỗ - selector chết, pipeline dừng, bạn phải mở DevTools debug lại từ đầu.

Hầu hết các công cụ hiện tại đều vấp phải giới hạn này:

  • BeautifulSoup - đơn giản, thân thiện, nhưng không có stealth, chậm, và selector tĩnh gãy ngay khi layout đổi.
  • Scrapy - framework nặng, phù hợp crawl quy mô lớn nhưng overkill cho script nhỏ, không có anti-bot built-in.
  • Playwright/Selenium - chạy browser thật, render JS được nhưng verbose, nặng RAM/CPU, và vẫn bị detect nếu cấu hình không đúng.

Không công cụ nào trong số này tự phục hồi khi website thay đổi cấu trúc. Bạn phải sửa thủ công, mỗi lần.

Scrapling hoạt động thế nào

Scrapling giải quyết bài toán này theo 3 lớp độc lập, dùng chung một API nhất quán - bạn chỉ đổi một dòng code để chuyển giữa các chế độ.

1. Adaptive Parser - Bộ nhớ element

Thay vì dựa vào selector cứng, Scrapling lưu fingerprint của element: tag name, text, attributes, sibling và DOM depth vào SQLite local. Khi site redesign, Scrapling tính similarity score để tìm lại element gần nhất - không cần bạn viết lại selector.

# Lần đầu - lưu fingerprint
page.css(".product-price", auto_save=True)

# Sau khi site đổi class/layout - Scrapling tự tìm lại
page.css(".product-price", adaptive=True)

2. Ba tầng fetcher - chọn đúng công cụ cho từng tình huống

FetcherDùng khiEngineTốc độ
FetcherSite tĩnh, không JS, không bot-check nặngcurl_cffi + TLS fingerprintNhanh nhất
StealthyFetcherCloudflare Turnstile, anti-bot filterCamoufox (Firefox fork) + anti-detectTrung bình
DynamicFetcherSPA, AJAX, cần click/scrollPlaywright Chromium/ChromeChậm nhất

StealthyFetcher dùng Camoufox - một bản Firefox fork được vá để chặn CDP leak, WebRTC leak, tạo canvas noise, và giả lập hành vi người dùng. Tham số solve_cloudflare=True tự xử lý Turnstile challenge, humanize=True mô phỏng chuyển động chuột tự nhiên.

3. Spider framework - crawl quy mô lớn

API tương tự Scrapy: định nghĩa spider với start_urls, async parse callbacks, tự động phát hiện request bị block và retry, checkpoint pause/resume (Ctrl+C dừng an toàn - chạy lại từ đúng chỗ dừng), streaming real-time qua async for item in spider.stream().

Con số biết nói

Benchmark chạy trên 5.000 phần tử HTML lồng nhau, trung bình 100+ lần chạy:

LibraryThời gian (ms)So với Scrapling
Scrapling1.991x (baseline)
Parsel/Scrapy2.01Tương đương
Raw lxml2.541.27x chậm hơn
PyQuery24.1712x chậm hơn
Selectolax82.6341x chậm hơn
BeautifulSoup + lxml1,584784x chậm hơn
BeautifulSoup + html5lib3,3911,679x chậm hơn

Adaptive similarity search (tìm element sau khi site đổi): Scrapling 2.46ms vs AutoScraper 13.3ms (5.4x nhanh hơn).

Thực tế: parse 10.000 trang HTML - BeautifulSoup mất 3-4 giờ, Scrapling mất 20-30 giây.

Thêm hai số nữa đáng chú ý: JSON serialization 10x nhanh hơn standard library Python, session reuse (FetcherSession) nhanh hơn 10x so với tạo connection mới mỗi request.

Ai nên dùng ngay

  • Data engineer scrape hàng ngày - adaptive tracking giảm drastically số lần phải debug selector bị gãy sau mỗi lần site update. Viết một lần, chạy lâu dài.
  • AI developer xây agent/RAG - MCP server built-in cho phép Claude, Cursor gọi Scrapling để extract clean content trước khi đưa vào LLM, tiết kiệm token đáng kể so với feed raw HTML. Đây cũng là lý do OpenClaw community (10.700+ skills) dùng Scrapling làm fallback khi Jina/markdown.new bị block.
  • Dev cần prototype nhanh - API quen thuộc như BeautifulSoup, CLI codeless extraction (scrapling extract url.com output.md), Docker image với tất cả browser pre-installed.
  • Team scrape site có Cloudflare - StealthyFetcher bypass Turnstile mặc định, không cần viết custom workaround.

Giới hạn cần biết

  • Yêu cầu Python 3.10+ - không hỗ trợ 3.9 trở xuống.
  • Không cung cấp proxy - bạn tự source và quản lý proxy rotation.
  • StealthyFetcher tốn CPU/RAM đáng kể - dùng HTTP Fetcher cho site tĩnh để tiết kiệm tài nguyên.
  • Bypass Cloudflare không đảm bảo 100% - anti-bot là cuộc chiến không hồi kết, cần monitor và fallback.
  • Adaptive mode lưu fingerprint vào SQLite local - không commit DB này lên git, không dùng auto_save trên trang có PII (email, session token, địa chỉ).
  • Project còn trẻ (2 năm), đôi khi có bug nhỏ và docs chưa cập nhật kịp tính năng mới nhất.

Bắt đầu trong 3 dòng lệnh

pip install scrapling[all]
scrapling install  # download browser dependencies
python -c "from scrapling import Fetcher; print(Fetcher().get('https://httpbin.org/get').status)"

Để scrape site có Cloudflare:

from scrapling.fetchers import StealthyFetcher

page = StealthyFetcher().get('https://cloudflare-protected-site.com', solve_cloudflare=True)
print(page.css('h1').text)

Kết

Scrapling không phải là thứ thứ 100 trong danh sách "python scraping library" - đây là cách tiếp cận khác hẳn: parser tự phục hồi, bypass bot-check mặc định, và tích hợp sâu vào AI workflow. 39.9k sao GitHub sau 2 năm và con số 774x so với BeautifulSoup nói lên điều gì đó về chất lượng thực.

Nếu bạn đang xây data pipeline hay AI agent cần scrape web, Scrapling đáng để thử - đặc biệt khi nó hoàn toàn miễn phí.

Nguồn: GitHub D4Vinci/Scrapling, Scrapling Docs, ScrapingBee analysis.