Khái niệm, định nghĩa Scrapy là gì?

Scrapy là một framework được viết bằng Python, nó cấp sẵn 1 cấu trúc tương đối hoàn chỉnh để thực hiện việc crawl và extract data từ website một cách nhanh chóng và dễ dàng.

THÔNG TIN CHÍNH

Bạn muốn lấy dữ liệu từ các website nhưng dữ liệu đó quá lớn để copy rồi paste vào database của bạn, scrapy hỗ trợ bạn làm điều đó. Việc lấy dữ liệu website hoàn toàn tự động nhanh chóng và việc sử dụng scrapy cũng rất đơn giản giúp bạn tiếp kiệm được nhiều thời gian và công sức.

Nói tới đây có thể sẽ có bạn hỏi thu thập dữ liệu là gì, để làm gì, sao phải dùng Scrapy để thu thập dữ liệu? Để giải thích dễ dàng thì mình sẽ đặt ra một bài toán sau: “Bạn cần xây một trang web/ứng dụng tổng hợp những tin tức thời sự được đăng trên các trang báo như Vnexpress, Dantri, Genk… tương tự như thằng Baomoi ấy”. Vậy để giải bài toán này thì chúng ta cần có đầu vào là các bài báo được đăng trên các trang kia, khi đó, chúng ta cần dùng Scrapy để thu thập các bài báo.

Ưu điểm của Scrapy là cung cấp sẵn 1 cấu trúc tương đối hoàn chỉnh để thực hiện việc crawl và scrape data, người dùng chỉ cần bổ sung thêm định nghĩa về dữ liệu cần lấy là xong (ví dụ như URL bắt đầu là gì, link chuyển qua trang mới là gì, các thông tin cần lấy ở mỗi trang là gì).

THÀNH PHẦN CỦA SCRAPY

Scrapy Engine

Scrapy Engine có trách nhiệm kiểm soát luồng dữ liệu giữa tất cả các thành phần của hệ thống và kích hoạt các sự kiện khi một số hành động xảy ra

Scheduler

Giống như một hàng đợi (queue), scheduler sắp xếp thứ tự các URL cần download

Dowloader

Thực hiện dowload trang web và cung cấp cho engine

Spiders

Spiders là class được viết bởi người dùng, chúng có trách nhiệm bóc tách dữ liệu cần thiết và tạo các url mới để nạp lại cho scheduler qua engine.

Item Pipeline

Những dữ liệu được bóc tách từ spiders sẽ đưa tới đây, Item pipeline có nhiệm vụ xử lý chúng và lưu vào cơ sở dữ liệu

Các Middlewares

Là các thành phần nằm giữa Engine với các thành phần khác, chúng đều có mục địch là giúp người dùng có thể tùy biến, mở rổng khả năng xử lý cho các thành phần. VD: sau khi dowload xong url, bạn muốn tracking, gửi thông tin ngay lúc đó thì bạn có thể viết phần mở rộng và sửa lại cấu hình để sau khi Dowloader tải xong trang thì sẽ thực hiện việc tracking.

a. Spider middlewares

Là thành phần nằm giữa Eninge và Spiders, chúng xử lý các response đầu vào của Spiders và đầu ra (item và các url mới).

b. Dowloader middlewares

Nằm giữa Engine và Dowloader, chúng xử lý các request được đẩy vào từ Engine và các response được tạo ra từ Dowloader

c. Scheduler middlewares

Nằm giữa Engine và Scheduler để xử lý những requests giữa hai thành phần.