Scrapy framework xây dựng các spider thu thập dữ liệu

Scrapy là một framework mạnh mẽ và phổ biến để xây dựng các spider thu thập dữ liệu trên web. Dưới đây là hướng dẫn cơ bản để cài đặt và sử dụng Scrapy trên hệ điều hành Ubuntu:


1. Cài đặt Scrapy trên Ubuntu

Trước khi bắt đầu, hãy đảm bảo rằng bạn đã cài đặt Python và pip trên hệ thống của mình.

a. Cài đặt các gói cần thiết

Mở terminal và chạy lệnh sau để cài đặt các phụ thuộc:

sudo apt update
sudo apt install python3 python3-pip python3-venv

b. Tạo môi trường ảo (khuyến nghị)

Tạo và kích hoạt môi trường ảo để quản lý các gói Python:

python3 -m venv scrapy_env
source scrapy_env/bin/activate

c. Cài đặt Scrapy

Sử dụng pip để cài đặt Scrapy:

pip install scrapy

Để kiểm tra xem Scrapy đã được cài đặt thành công chưa:

scrapy --version

2. Tạo và chạy một dự án Scrapy

a. Tạo một dự án Scrapy mới

Chạy lệnh dưới đây để tạo một dự án Scrapy mới:

scrapy startproject myproject

Thao tác này sẽ tạo cấu trúc thư mục như sau:

myproject/
    scrapy.cfg
    myproject/
        __init__.py
        items.py
        middlewares.py
        pipelines.py
        settings.py
        spiders/
            __init__.py

b. Tạo một spider

Di chuyển vào thư mục dự án:

cd myproject

Tạo một spider mới bằng lệnh:

scrapy genspider example example.com

Lệnh này sẽ tạo tệp example.py trong thư mục spiders.

c. Viết mã thu thập dữ liệu

Mở tệp spider trong spiders/example.py và chỉnh sửa nội dung. Ví dụ đơn giản để lấy tiêu đề từ trang web:

import scrapy

class ExampleSpider(scrapy.Spider):
    name = "example"
    start_urls = ['http://example.com']

    def parse(self, response):
        yield {
            'title': response.css('title::text').get(),
        }

d. Chạy spider

Để chạy spider và lưu dữ liệu vào tệp JSON:

scrapy crawl example -o output.json

3. Cấu hình dự án Scrapy

Các cài đặt như độ trễ giữa các yêu cầu, số lượng yêu cầu đồng thời,… có thể được cấu hình trong tệp settings.py.

Ví dụ để giới hạn số lượng yêu cầu đồng thời:

CONCURRENT_REQUESTS = 1
DOWNLOAD_DELAY = 2  # Giảm tải cho server

4. Debug và kiểm tra

Scrapy cung cấp chế độ shell để kiểm tra mã:

scrapy shell 'http://example.com'

Bạn có thể sử dụng các lệnh như response.css() hoặc response.xpath() để kiểm tra các selector.


5. Tài liệu chính thức

Để biết thêm chi tiết, bạn có thể tham khảo tài liệu chính thức tại: Scrapy Documentation.