Trong phần này chúng ta tiếp tục tìm hiểu một số cấu hình Scrapy.
Tùy chỉnh độ ưu tiên
Scrapy cho phép chúng ta chọn những trang nào nên được cào trước, bằng cách dùng tham số DEPTH_LIMIT
. Giả sử nếu chúng ta thiết lập DEPTH_LIMIT=3,
thì khi cào các bài báo từ 1 trang tin tức, Scrapy sẽ ưu tiên gửi request cào 3 bài đầu tiên của trang đầu tiên rồi mới tiếp tục các request sau đó, nếu thiết lập là 0 thì tức là không giới hạn.
Feed
Feed là tính năng cho phép chúng ta xuất những gì cào được vào file hoặc tải lên một máy chủ nào đó. Chúng ta dùng tham số FEED_URI.FEED_URI
để làm việc này. Ví dụ:
FEED_URI = 'output.json'
Nếu muốn up data lên AWS thì chúng ta thiết lập như sau:
FEED_URI='s3://mybucket/file.json' AWS_ACCESS_KEY_ID=<key> AWS_SECRET_ACCESS_KEY=<secret>
Tất nhiên là phải điền thông tin đăng nhập vào.
Để quy định dạng file upload thì dùng FEED_FORMAT
:
FEED_FORMAT='csv'
Một số cấu hình thú vị khác
- BOT_NAME: tên được dùng cho tham số User-Agent
- DEFAULT_ITEM_CLASS: class thừa kế mặc định khi tạo Item.
- DEFAULT_REQUEST_HEADERS: header mặc định khi gửi request, nếu không thiết lập thì mặc định là
{ 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language':'en' }
- DNSCACHE_ENABLED: bật chế độ lưu DNS trong bộ nhớ cache. Giá trị True/False.
- DNSCACHE_SIZE: độ lớn bộ nhớ dùng cho DNSCACHE. Mặc định 10000.
- DNS_TIMEOUT: thời gian tối đa để DNS tiến hành gửi các request. Mặc định 60.
- DOWNLOADER: chọn class download cho Scrapy. Mặc định là
scrapy.core.downloader.Downloader
- DOWNLOADER_DELAY: thời gian chờ trước khi trả về một thứ gì đó từ website. Mặc định 0.
- DOWNLOAD_HANDLERS: tên các hàm callback khi tải xong thứ gì đó. Có giá trị là kiểu dict. Mặc định
{}
. - DOWNLOAD_TIMEOUT: thời gian tối đa để tải thứ gì đó. Mặc định 180.
- DOWNLOAD_MAXSIZE: dung lượng tối đa trong một lần tải. Mặc định 1073741824 (1024MB)
- DOWNLOAD_WARNSIZE: dung lượng tối thiểu, nếu kích thước tải về vượt quá dung lượng này thì Scrapy đưa ra cảnh báo. Mặc định là 33554432 (32 MB)
- DUPEFILTER_CLASS: chọn class dùng làm trình phát hiện các request bị trùng lặp. Mặc định là scrapy.dupefilters.RFPDupeFilter.
- DUPEFILTER_DEBUG: có đưa ra thông báo về các request bị trùng hay không. Giá trị True/False.
- LOG_ENABLED: có lưu lại logs không. Mặc định True.
- LOG_ENCODING: in ra các logs dưới mã hóa nào. Mặc định utf-8.
- LOG_FILE: lưu log vào file. Mặc định None.
- LOG_FORMAT: cấu trúc các dòng log. Mặc định
%(asctime)s [%(name)s] %(levelname)s: %(message)s
- LOG_DATEFORMAT: cấu trúc thời gian log. Mặc định
%Y-%m-%d %H:%M:%S
- LOG_LEVEL: mặc định là DEBUG.
- MEMDEBUG_ENABLED: bật chế độ debugging trong bộ nhớ RAM. Mặc định False.
- MEMUSAGE_ENABLED: bật chế độ sử dụng thêm bộ nhớ khi Scrapy sử dụng quá bộ nhớ cho phép. Mặc định False.
- MEMUSAGE_LIMIT_MB: lượng bộ nhớ được sử dụng tối đa. Mặc định 0.
- MEMUSAGE_CHECK_INTERVAL_SECONDS: kiểm tra xem đã sử dụng hết bộ nhớ cho phép chưa sau 1 khoảng thời gian. Mặc định 60.
- MEMUSAGE_NOTIFY_MAIL: bật thông báo về email khi chức năng MEMUSAGE được sử dụng. mặc định False.
- MEMUSAGE_REPORT: bật chế độ gửi báo cáo sử dụng bộ nhớ mỗi khi một Spider hoàn tất. Mặc định False.
- MEMUSAGE_WARNING_MB: gửi cảnh báo khi sử dụng tối thiểu một lượng bộ nhớ. Mặc định 0.
- RANDOMIZE_DOWNLOAD_DELAY: cho phépScrapy sẽ chờ ngẫu nhiên trong một khoảng thời gian trước khi tải các request từ website. Mặc định True.
- REDIRECT_MAX_TIMES: số lượng request tối đa có thể được điều hướng. Mặc định 20.
- ROBOTSTXT_OBEY: bật chế độ tuân thủ luật cào dữ liệu từ file robots.txt trên các website. Mặc định False.