Scrapyでファイルをダウンロード
はじめに
Scrapyでファイルをダウンロードしてみようと思ったのですが、調べてみると記事がほとんどなく手順整理もあわせてポイントを絞って書いてみます。
の2つを参考にしました。
対象者
- Scrapyを使ってみたことがある人
- ベーシックテンプレートやクロールテンプレートの基本操作を試してみたのでファイルの取得をしてみたい人
設定
プロジェクトやspidersの作成方法は同じです。
基本的な設定は省略します。
spidersファイル.py
#ファイル取得部分
item = downloadItem() #items.pyのクラス
item['title'] = response.xpath('xxxx').get() #ファイル名にしたい元のファイル名
item['file_urls'] = [response.xpath('yyyy').get()] #file_urlsはアレンジ不可
yield item
items.py
class downloadItem(scrapy.Item):
title = scrapy.Field()
file_urls = scrapy.Field()
files = scrapy.Field() #file_urlsからDL・filesはアレンジ不可
pipelines.py
#DLするファイルのurlを使ってファイルを変更
class downloadPipeline(FilesPipeline):
def file_path(self, request, response=None, info=None):
file_paths = request.url.split("aaaa") #適当に
return file_name
settings.py
#デフォルト CONCURRENT_REQUESTS = 32
CONCURRENT_REQUESTS = 1 #同時リクエストを1に設定
#以下は追加
FILES_STORE = 'download' #ファイルダウンロード先 プロジェクトフォルダ内に作成される。
ITEM_PIPELINES = {
'[プロジェクト名].pipelines.downloadPipeline': 1,
}
#DOWNLOAD_DELAYの設定も忘れずに
実行
scrapy crawl [spidersファイル名]