- Tương truyền chốn web giang hồ có bộ tuyệt học mang tên Scrapy, do Zyte chưởng môn cùng quần hùng tu luyện, đạt khoảng 62k sao GitHub.
- Bí kíp tân bản 2.16.0 xuất thế 19/05/2026, đòi căn cơ Python 3.10+ và đã khai thông tới Python 3.14.
- Cốt tủy: Scrapy là cả một bộ tâm pháp gồm spider, pipeline và middleware, chẳng phải chiêu lẻ parse HTML.
- Engine bất đồng bộ vung muôn request cùng lúc, đó là căn nguyên của chữ nhanh.
TL;DR - Lời mở của thuyết thư nhân
Chư vị hảo hán, nếu ngươi từng chắp vá requests với BeautifulSoup mà đi thu thập dữ liệu dăm ba trang web, ắt đã có ngày chạm phải bức tường vô hình khi đại nghiệp ngày một phình to. Hôm nay lão phu kể về một bộ tuyệt học chốn giang hồ: Scrapy - thần công crawl và scrape web bậc thượng thừa luyện bằng Python, chuyên trích xuất dữ liệu có cấu trúc từ vạn trang web với khí thế ngàn quân. Bộ bí kíp này đạt khoảng 62k sao GitHub, do Zyte chưởng môn (tiền thân là Scrapinghub) cùng quần hùng thiên hạ chấp bút, lưu hành dưới ấn chứng BSD-3-Clause. Tân bản mới nhất là Scrapy 2.16.0, chính thức xuất thế ngày 19/05/2026.

Nỗi khổ của kẻ hành tẩu giang hồ
Thu thập một trang thì dễ như trở bàn tay. Nhưng khi phải đoạt dữ liệu từ hàng nghìn trang, ngươi buộc phải tự mình gánh vác trăm thứ: vung request song song để khỏi phải chờ đợi từng trang một, đánh lại khi thất bại (retry), kính cẩn tuân theo robots.txt như đạo nghĩa võ lâm, ghìm tốc độ kẻo bị đối thủ phong tỏa, quản cookies và session, rồi lại còn phải gột rửa và cất giữ chiến lợi phẩm. Tự tay rèn hết những công phu ấy vừa hao tổn nội lực, vừa khó bề gìn giữ về sau.
Scrapy thu cả vòng đời thu thập dữ liệu vào một bộ tâm pháp có chương pháp rõ ràng. Ngươi chỉ việc dồn tâm vào chiêu thức trích xuất, phần nội công hạ tầng cứ để môn phái lo liệu. Các tuyệt chiêu thường dùng gồm data mining, monitoring, automated testing và information processing.
Hệ trọng hơn cả, chương pháp của Scrapy ép code của ngươi phân minh theo từng môn loại: nơi định chiêu thức crawl, nơi luyện dữ liệu, nơi điều khí tốc độ và quy củ. Khi đại nghiệp bành trướng, chính cái chương pháp này giữ cho codebase không sa thành một mớ tạp niệm chắp vá khó cứu.
Tâm pháp vận hành ra sao
Bộ công phu Scrapy xoay quanh mấy đại huyệt sau:
- Spiders: môn đệ kế thừa
scrapy.Spider, định ra URL khởi hành và chiêuparse()để hóa giải response. - Selectors: trích dữ liệu HTML/XML bằng CSS selector mở rộng cùng XPath, lại kèm tuyệt kỹ regex hỗ trợ.
- Item Pipelines: tinh luyện dữ liệu sau khi đoạt về - gột rửa, kiểm chứng, khử trùng lặp, cất vào database hay file.
- Middlewares: ám kình can thiệp request/response để cấy thêm công năng tùy biến qua signals và API.
- Feed Exports: luyện thành JSON, CSV, XML rồi tàng trữ nơi FTP, S3 hoặc local filesystem.
Cái làm nên thân pháp như điện của Scrapy chính là engine bất đồng bộ. Request được điều binh và xử lý theo lối non-blocking: Scrapy chẳng cần chờ request này thu chiêu mới phóng request kế tiếp, mà vung ra muôn request cùng một lúc. Kể từ bản 2.13.0, môn phái chuyển hẳn sang tâm pháp async-first khi bật asyncio reactor làm mặc định.

Nhập môn cấp tốc
Khai môn chỉ một quyết:
pip install scrapyMột spider sơ nhập để đoạt lấy danh ngôn trong trang, chiêu thức như sau:
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = ["https://quotes.toscrape.com"]
def parse(self, response):
for quote in response.css("div.quote"):
yield {
"text": quote.css("span.text::text").get(),
"author": quote.css("small.author::text").get(),
}
next_page = response.css("li.next a::attr(href)").get()
if next_page:
yield response.follow(next_page, self.parse)Thi triển spider và trút luôn chiến lợi phẩm ra file JSON Lines:
scrapy crawl quotes -o quotes.jsonlKhi luyện hay dò lỗi selector, ngươi có thể khai mở interactive shell để thử CSS/XPath ngay trên một response thật, chẳng cần vận lại toàn bộ spider.
Những tuyệt kỹ trấn phái
- Trích dữ liệu bằng CSS selector mở rộng cùng XPath, kèm tuyệt kỹ regex.
- Interactive shell console (IPython-aware) để thử selector lúc luyện spider.
- Feed export ra JSON, CSV, XML; tàng trữ nơi FTP, S3, local filesystem.
- Nội công hóa giải encoding thâm hậu, tự dò ra encoding tà dị hoặc hư hỏng.
- Built-in cho cookies & session, HTTP compression, authentication, HTTP cache, user-agent spoofing, kính theo
robots.txt, hạn chế độ sâu crawl. - Telnet console để nhập vào Python console ngay bên trong tiến trình crawler mà soi xét, dò lỗi.
- Sitemap/feed crawler, media pipeline tự thu ảnh, caching DNS resolver.
Scrapy luận kiếm cùng requests + BeautifulSoup
Đây là cuộc tỉ thí muôn đời tân thủ hằng thắc mắc. Cao thấp nằm ở tầm vóc:
| Tiêu chí | requests + BeautifulSoup | Scrapy |
|---|---|---|
| Bản chất | Chiêu lẻ fetch + parse | Cả một bộ tâm pháp trọn vòng đời |
| Concurrency | Tự vận công thủ công | Bất đồng bộ, sẵn trong người |
| Pipeline cất dữ liệu | Tự rèn lấy | Item pipeline có sẵn |
| robots.txt, throttle, retry | Tự luyện từng món | Sẵn qua middleware |
| Hợp với | Tiểu chiêu dăm ba trang | Đại nghiệp crawl, gìn giữ trường kỳ |
Nói gọn một lời: requests và BeautifulSoup là khinh công tuyệt diệu cho những phi vụ nhỏ và chớp nhoáng. Còn Scrapy xưng hùng khi ngươi cần tầm vóc, tốc độ và một codebase có chương pháp để trấn giữ lâu dài. Lắm kẻ khởi đầu bằng requests, rồi quy thuận Scrapy đúng vào lúc phải tự tay rèn lại những món mà môn phái đã luyện sẵn từ lâu: hàng đợi request, retry thông tuệ, throttle theo domain và tàng trữ có pipeline.
Tân chiêu ở bản 2.16.0
Bản 2.16.0 tiếp tục đẩy Scrapy lên cảnh giới tân thời:
- Khai thông căn cơ Python 3.14; dứt bỏ Python 3.9 và PyPy 3.9-3.10.
- Phế đi tàn chiêu HTTP/1.0 cùng class
InitSpider. - Dùng
time.monotonic()để tính elapsed time chuẩn xác hơn.
Mấy món đã thành cựu pháp (deprecated) cần lưu tâm khi nâng cấp: scrapy.FormRequest (khuyên dùng thư viện form2request), các thành phần thư tín như MailSender, và setting DNS_RESOLVER đổi danh thành TWISTED_DNS_RESOLVER.
Khi nào nên bái nhập môn Scrapy
Hãy chọn Scrapy khi ngươi dựng đại nghiệp crawl có tầm vóc, cần tốc độ cao nhờ concurrency, và muốn một chương pháp minh bạch để cả môn phái cùng gìn giữ trường kỳ. Còn nếu chỉ cần đoạt dữ liệu từ dăm ba trang cho một tiểu chiêu, requests cộng BeautifulSoup vẫn là khinh công gọn nhẹ hơn. Nhưng một khi chí lớn ngày một bành trướng, Scrapy là bước đăng cao tự nhiên, đã được giang hồ kiểm chứng qua hơn một thập kỷ phong sương.
Khởi sự với pip install scrapy và tham khảo bí kíp chính tông via Scrapy docs. Toàn bộ chân kinh khai phóng tại via GitHub scrapy/scrapy.
