16:17PythonScrapyPython製のクローラーフレームワークScrapyで画像収集をしたい時のメモです。画像収集に関してもScrapyは簡単にスクレイピングできる仕組みを最初から持っているのでこれを使ってみます。Scrapyは1.6.0を利用しました。画像収集クローラーの作成と実行スポンサーリンクpillowのインストールまずはpillowというモジュールをインストールします。Library)でも動くと公式は説明していますが、PILというモジュールはpython3系には無いらしいので推奨通りpillowを使います。次にsettings.pyに下記3行を追加します。Trueパイプラインの処理は自分でもカスタマイズできますが今回はとりあえず標準の物を使います。IMAGES_STOREは画像の保存先を指定。この例だとsettings.pyと同じ階層にimagesディレクトリを作ってます。MEDIA_ALLOW_REDIRECTSはURLのリダイレクトを有効化するかどうか。リダイレクトされるケースがある場合に便利なので設定しておいて損はないと思います。テスト用に混在コンテンツで作ったデモページをScrapyにクロールさせると、非SSLで埋め込まれた画像もリダイレクトして取得してくれます。注意点ITEM_PIPELINESに設定するImagesPipelineについて調べると下記のような古い?情報がヒットします。1.6.0にこの設定したらこんなエラーが出ました。'scrapy.contrib'ここで無駄にハマってしまいました...items.pyに設定追加items.pyはこのように設定を追加します。imagesとimage_urlsは予約語みたいです。次はこのようなクローラーを書いてこのブログのアイキャッチ画像を全て取得してみます。itemimage_urlsに画像のURLを入れてあげれば後はScrapyが勝手にダウンロードして集めてくれます。配下に、画像URLのsha1ハッシュ形式のファイル名で保存されます。文字のスクレイピングだけじゃなく画像収集もScrapyは簡単です。微妙なポイントとしては画像は勝手にJPEG形式に変換されるという事、勝手にfullというディレクトリが出来てしまう事等があり、実稼働させるならここの処理はやっぱりオリジナルで実装が一番かなと思います。ファイル名重複とかあると面倒臭いのでURLのsha1ハッシュ形式は個人的に歓迎ですが、どうせならこんな感じに保存したい。images/e/6e/801f19bca10667c85c9ac5f62c3499ced489616e.jpgここの改良版はこれから作るので書いたらまたここにアップします。