注:小ネタです。
やったこと
ACL Anthologyの論文pdfを一括DLするスクリプトを書きました.
NAACL2019の論文収集する時に「個別PDF欲しいけどひとつずつDLするのめんどくちゃい」と思ってしまったのでついうっかり書いてしまった.
依存ソフトウェア
- Python3
- Google Chrome
- chromedriver
- chromedriver_binary
- selenium
使い方
python ./acl_anthology_downloader.py -e <event_name> -y <year> -o <output_dir> -d </path/to/chromedriver>
イベント名と年度を指定すると該当イベントのpdfをすべてDLする仕様になってます.
例
python ./acl_anthology_downloader.py -e NAACL -y 2019 -o papers/NAACL2019 -d /usr/local/bin/chromedriver
注意点
- Selenium+chromedriverを使っているので,Chromeのバージョンと合ったchromedriverをインストールしてください
- デフォルトだとheadlessモードで動作しますが,Linux環境などでheadlessでうまく動作しない場合は
--xvfb/-x
オプションを付与してください(当方のWSL環境だとこの状況になりました)
実装に関して
今までPythonでのスクレイピングはscrapyを愛用してきましたが,Seleniumにも慣れておきたい意図で今回はSelenium+chromedriverを使用しました.
chromedriverの動作環境構築のコストはかかりますが,APIはscrapyよりかなり使いやすい気がしますね.
Webアプリの自動テストにも使えるし(というか本来の用途はそちら)
おわりに
ICMLとかNIPSのダウンローダも書いておきたい.