Tạo một Scrapy Spider
Với Scrapy, các spiders là các classes nơi bạn định nghĩa hành vi crawling (các links/URLs gì cần scrape)
và scraping (cái gì để rút) của bạn.
Sau đây là các bước khác nhau sử dụng bởi một Spider để scrape một website:
+ Nó bắt đầu bằng cách sử dụng các URLs trong class mảng’ start_urls như các URLs bắt đầu và truyền chúng tới
start_requests() để khởi tạo các request objects. Bạn có thể ghi đè start_requests() để phù hợp hóa theo yêu
cầu các bước này (e.g thay đổi phương pháp/verb HTTP và sử dụng POST thay vì GET hay thêm thông tin xác thực).
+ Nó sau đó sẽ lấy nội dung của mỗi URL và lưu trả lời trong một Request object, cái nó sẽ truyền tới parse().
+ Phương thức parse() sau đó sẽ rút dữ liệu (trong trường hợp của chúng ta, product price, ảnh, mô tả, tiêu đề)
và trả về hoặc một dictionary, một vật hay Request object, hay một Iterable
Bạn có thể tự hỏi tại sao phương thức parse có thể trả về các objects khác nhau. Nó là cho tính linh động. Giả
sử bạn muốn scrape một website TMĐT cái không có bất cứ sitemap nào. Bạn có thể bắt đầu bằng cách scrape các hạng
mục product, nên cái này sẽ là một phương thức parse đầu tiên.
Phương thức này sẽ sau đó sử dụng một Request object cho mỗi hạng mục product thành một phương thức callback mới
parse2(). Cho mỗi hạng mục bạn sẽ cần xử lí phân trang. Sau đó cho mỗi product scraping thực sự cái khởi tạo
một Item nên một hàm parse thứ ba.
Với Scrapy bạn có thể trả về dữ liệu scrape như một dictionary Python đơn giản, nhưng nó là một ý tưởng tốt để
sử dụng Scrapy Item class tích hợp. Nó là một cái chứa đơn giản cho dữ liệu scrape của chúng ta và Scrapy sẽ nhìn
vào các trường của item này cho nhiều thứ như xuất khẩu dữ liệu thành định dạng khác nhau (JSON / CSV…), item
pipeline etc.
Nên đây là một class product cơ bản:
import scrapy
class Product(scrapy.Item):
product_url = scrapy.Field()
price = scrapy.Field()
title = scrapy.Field()
img_url = scrapy.Field()
Bây giờ chúng ta có thể khởi tạo một spider, hoặc là với command line helper:
scrapy genspider myspider mydomain.com
Hay bạn có thể làm nó thủ công và đặt Spider’s code của bạn bên trong thư mục /spiders
