最高裁の判例検索 の結果(html)から判例をなるべく穏便に取得するためのスクリプトです。
30秒のリクエストディレイをはさみながら、 <HanreiRecords><Hanrei>...</Hanrei>...</HanreiRecords>
というようなXMLを生成していきます。
事前に必要なのは以下になります。
- Python2.7およびvirtualenv
- pdftotext
判例をダウンロードするには、まず 検索システム
の事件リストページを収集します。
事件リストページとは、検索フォームを適切に埋めて 検索 ボタンで送信すると現れるリスト表示のページで、
http://www.courts.go.jp/search/jhsp0010Back.action
や http://www.courts.go.jp/search/jhsp0010List2
のようなURIをもつ動的なものになっているはずです。
これらはクッキー制御が厳しくなっているため、ブラウザの保存機能で取得するのが最も手短な仕方だと思われます。
このとき、ファイル名の形式を <any text>_<category>_<any text>.html
のようにすると、 https://github.com/drowse314-dev-ymat/hanrei_abstract_extractor との連携に役立ちます。
minji_searches ├── minji_ju_page1.html ├── minji_ju_page2.html └── minji_ju_page3.html
収集した検索結果リストから、個々の判例のデータを取得します。
$ cd hanrei_getter
$ virtualenv-2.7 venv # 名前はなんでも
$ source venv/bin/activate
$ pip install -r requirements.txt
$ python run.py /path/to/minji_searches
判例は検索結果リストのhtmlファイル単位でダウンロードされ、ひとつのリストにリンクが含まれる判例群から
ひとつのXMLファイルが生成されます。
XMLファイルは、 hanreidata 内に順次蓄積されます。
ファイル名は <file name>.html
に対して <file name>.xml
となります。
検索結果リストは、複数のディレクトリから参照することができます。
その場合は単純に、 python run.py list_dir1 [list_dir2 list_dir3 ...]
とします。
英語版の判例検索 にも(無理やり)対応しています。 以下のオプションを指定することで、 日本語版とほぼ同様の処理になります。
$ python run.py english_list_dir --en_list
英語版では様々なデータ抜けが発生し、すぐに異常終了してしまうかもしれません。
その場合は、ブランチを interactive_fallback
に切替えると、エラーが送出される前に抜け属性をスキップするか、
または補完するかどうか等を対話的に選択することができます。
--en_missing_default
オプションを付加すると、この選択を自動化することができます。
オプションの詳細については、 python run.py --help
を参照して下さい。
$ git checkout interactive_fallback
$ python run.py english_list_dir --en_list --en_missing_default 1 # 全て自動的に空欄に
ダウンロード中に異常終了した場合、あるいは割り込みによって終了した場合、同じリストについてまたダウンロードを始めると、 ダウンロード済の判例をキャッシュとして扱い、途中から再開することができます。 このとき、キャッシュの有無は hanreidata 内に蓄積されたXMLファイルの名称によって判断されるので、異常終了によって 空のXMLファイル等が生成された場合は注意して下さい。