scrapy 下載文件

接到組長需求,在某個網站上搜索“附件”,後下載所有相關文章內的 附件.word 或 附件.pdf

思路:

Files Pipeline

在某個Spider中,你爬取一個item後,將相應的文件URL放入file_urls字段中
item被返回之後就會轉交給item pipeline
當這個item到達FilesPipeline時,在file_urls字段中的URL列表會通過標準的Scrapy調度器和下載器來調度下載,並且優先級很高,在抓取其他頁面前就被處理。而這個item會一直在這個pipeline中被鎖定,直到所有的文件下載完成。
當文件被下載完之後,結果會被賦值給另一個files字段。這個字段包含一個關於下載文件新的字典列表,比如下載路徑,源地址,文件校驗碼。files裏面的順序和file_url順序是一致的。要是某個寫文件下載出錯就不會出現在這個files中了。

例:
setting.py:
# 同時使用圖片和文件Pipeline
ITEM_PIPELINES={
    'scrapy.pipelines.images.ImagesPipeline': 1,
    'scrapy.pipelines.files.FilesPipeline': 2,
}
# 文件和圖片存儲路徑
FILES_STORE = '/path/to/valid/dir'
IMAGES_STORE = '/path/to/valid/dir'
# 文件過期時間
FILES_EXPIRES = 90
# 圖片過期時間
IMAGES_EXPIRES = 30
# 圖片縮略設置
IMAGES_THUMBS = {
    'small': (50, 50),
    'big': (270, 270),
}
# 圖片過濾器,最小高度和寬度
IMAGES_MIN_HEIGHT = 110
IMAGES_MIN_WIDTH = 110
item.py
import scrapy 
···

class myFileItem(scrapy.Item):
    # ... 其他item fields
    file_urls = scrapy.Field()
    files = scrapy.Field()

以上

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章