[[376]]で作ってみたimage_collectorですが、実際に使ってみた結果をフィードバックして改造しました。
http://coderepos.org/share/browser/lang/python/image_collector
- 画像URLのホスト名を指定できるようにした。(--hostnames "ホスト名1 ホスト名2 ...")
- 処理間隔をミリ秒単位で指定できるようにした。(-i, --interval)
- ソケットエラーが発生した場合のリトライ回数を指定できるようにした。(-r, --retry)
-
のsrc属性 or のhref属性を無視するオプションを追加。(--noimgtag, --noatag)
- "-n, --dry-run" オプションを追加。
特にソケットエラー発生時のリトライを実装したのが予想以上に助かりました。実際では結構ソケットエラーが発生していましたが、リトライ実装後は大体1度目のリトライで再接続して画像を取得できるようになり、取りこぼしが激減しました。
また "--noimgtag, --noatag" も思ったよりも便利でした。
imgタグではリサイズされたサムネイル画像のURLが指定されていて、aタグの方で元サイズの画像が指定されているリンクが結構多かったのです。
そうした場合に "--noimgtag" を指定して、aタグだけを拾うようにすると無駄も無いし、ネットワーク通信の負担もページによっては半分近くに減らせます。
あと、実際にアクセスする前に ".txt", ".html" でURLが終わるのを除去するようにしたのですが、これも予想以上に効果があり、無駄なリクエストを減らせました。
Pythonの演習として試しに作ってみたスクリプトですが、予想以上に便利に使えて、個人的には満足です。