- Scrapling v0.4.7 bypass Cloudflare Turnstile không cần cấu hình, nhanh hơn BeautifulSoup 774 lần trên bài test 5.000 phần tử lồng nhau.
- Parser tự học lại khi website đổi layout - không cần viết lại selector.
- MIT-like license (BSD-3-Clause), hoàn toàn miễn phí, 39.9k sao GitHub.
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
| Fetcher | Dùng khi | Engine | Tốc độ |
|---|---|---|---|
Fetcher | Site tĩnh, không JS, không bot-check nặng | curl_cffi + TLS fingerprint | Nhanh nhất |
StealthyFetcher | Cloudflare Turnstile, anti-bot filter | Camoufox (Firefox fork) + anti-detect | Trung bình |
DynamicFetcher | SPA, AJAX, cần click/scroll | Playwright Chromium/Chrome | Chậ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:
| Library | Thời gian (ms) | So với Scrapling |
|---|---|---|
| Scrapling | 1.99 | 1x (baseline) |
| Parsel/Scrapy | 2.01 | Tương đương |
| Raw lxml | 2.54 | 1.27x chậm hơn |
| PyQuery | 24.17 | 12x chậm hơn |
| Selectolax | 82.63 | 41x chậm hơn |
| BeautifulSoup + lxml | 1,584 | 784x chậm hơn |
| BeautifulSoup + html5lib | 3,391 | 1,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 -
StealthyFetcherbypass 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.
StealthyFetchertốn CPU/RAM đáng kể - dùng HTTPFetchercho 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_savetrê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.
