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.