LoginSignup
1
3

More than 3 years have passed since last update.

裁判所HPの規則リンク集スクレイピングのコードを改修する。

Posted at

自分自身の改修事項メモなのです。
法技研六法は,e-Govの法令データ提供システムだけではなく,裁判所HPの規則集からもリンクを収集して検索できるようにしています。裁判所規則は(行政規則とは異なり)法律と同格の法なので,実務上重要。

日本国憲法
第77条① 最高裁判所は、訴訟に関する手続、弁護士、裁判所の内部規律及び司法事務処理に関する事項について、規則を定める権限を有する。

裁判所規則は裁判所ウェブサイトに一覧が載っているので,これをスクレイピングすればリストを作ることができます。
これまで,法令リストを作るにあたっては,e-Govの法令APIのXMLデータをBeautifulSoupで処理していた余勢を駆って,裁判所規則集もBeautifulSoupで処理していたのですが,どうも最近の裁判所Web更新の折にHTMLがinvalidになったらしく(余計な</a>タグが入ってる),BeautifulSoupでのスクレイピングがうまくいかなくなりました。
ということで,(最初からそうしてりゃよかったのですが)正規表現でスクレイピングするように改修したので,そのメモ。

共通部分
import requests
import json
from urllib.parse import urljoin

#分野別の規則集URL
URL_COURTS = [
  "http://www.courts.go.jp/kisokusyu/minzi_kisoku/index.html",
  "http://www.courts.go.jp/kisokusyu/keizi_kisoku/index.html",
  "http://www.courts.go.jp/kisokusyu/kazi_syonen_kisoku/index.html",
  "http://www.courts.go.jp/kisokusyu/sonota_kisoku/index.html"
]

lawList = []
旧コード
from bs4 import BeautifulSoup

for genre in URL_COURTS:
  r = requests.get(genre)
  r.encoding = "utf-8" #裁判所HPはencodingがHTTP-Headerでわからない?
  soup = BeautifulSoup(r.text, "html.parser")
  links = soup.select('div#contents ul.txt90 a')
  for alink in links:
    print(alink)
    if alink.string: #何故か裁判所のリンク集に,文字を含まないリンクがある場合が。
      aLaw = {
        "LawName": "裁判所::"+alink.string,
        "LawNameShort": alink.string,
        "URL": urljoin(r.url, alink.get('href'))
      }
lawList.append(aLaw)
新コード
import re

reKisoku = re.compile('<li class="li01"><a href="(.+?)" target="_.+?">(.+?)</a>')
for genre in URL_COURTS:
  r = requests.get(genre)
  r.encoding = "utf-8"
  kisokus = reKisoku.findall(r.text)
  for aKisoku in kisokus:
    aLaw = {
      "LawName": "裁判所::"+aKisoku[1],
      "LawNameShort": aKisoku[1],
      "URL": urljoin(r.url,  aKisoku[0])
    }
    lawList.append(aLaw)

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3