Các dòng ống item
Một đặc tính cực kì hữu dụng khác của Scrapy là các dòng ống.
Các dòng ống được trình bày bởi các plain classes cái thực thi một phương thức process_item. Khi spider của bạn
chạy, nó sẽ gọi phương thức đó cho mỗi product item nó đã tạo trước kia và mỗi thực thể khởi tạo pipeline
được cấu hình sẽ thực hiện hiệu lực hóa của nó và các bước tiền xử lí trên item đó.
Hãy thử rằng với một thực thể khởi tạo dòng ống, cái hiệu lực hóa và bình thường hóa trường price của chúng ta. Class
nên được khai báo trong product_scraper/pipelines.py file của chúng ta.
Cái chúng ta đã làm ở đây là khai báo một plain class PriceValidatorPipeline với phương thức đã nói ở trên,
process_item.
Phương thức đó trước tiên check liệu item có một price chút nào không. Nếu nó không có, nó lập tức nhảy qua nó
với một ngoại lệ DropItem.
Nếu có một price, nó trước tiên sẽ thử làm sạch price string và chuyển đổi nó thành một giá trị dấu phẩy động.
Cuối cùng nó sẽ check liệu giá trị là bên trong giới hạn tùy biến của chúng ta 10 USD và 100 USD. Nếu tất cả
kiểm tra ra, nó sẽ lưu giữ giá trị price làm sạch trong item của chúng ta và truyền nó quay trở lại tới spider,
mặt khác nó sẽ ném ra ngoại lệ DropItem để ra tín hiệu cho spider của chúng ta, cái nó nên bỏ đi iem cụ thể này.
Cuối cùng, nhưng không phải ít nhất, chúng ta cũng cần làm spider của chúng ta biết về pipeline class của chúng
ta. Chúng ta làm cái này bằng cách biên tập ITEM_PIPELINES entry trong product_scraper/settings.py.
ITEM_PIPELINES = {
‘product_scraper.pipelines.PriceValidatorPipeline’: 100
}
Giá trị số chỉ ra ưu tiên của dòng ống. Giá trị càng thấp, nó sẽ trước.
Voila, chúng ta đã cấu hình class dòng ống của chúng ta và spider bây giờ nên gọi nó cho mỗi item và hiệu lực hóa
price tùy theo business logic của chúng ta. All right, hãy thực hiện bước đó xa hơn và thêm một dòng ống thứ hai
để duy trì dữ liệu trong một CSDL, đi thôi.

