平成30年7月豪雨による被害状況等についてのPDFをテキスト変換

平成30年7月豪雨災害に関する情報から

www.pref.ehime.jp

平成30年7月豪雨による被害状況等について(第??報)のPDFをダウンロードしテキスト化

  1. JAVAをインストール
  2. PDFBOXをダウンロード http://ftp.riken.jp/net/apache/pdfbox/2.0.11/pdfbox-app-2.0.11.jar 同じフォルダにおいておく
  3. 以下のファイルをpyで保存し実行
import os
import re
import shlex
import subprocess
from urllib.parse import urljoin

import requests
from bs4 import BeautifulSoup

url = 'https://www.pref.ehime.jp/h12200/h3007-gouu-saigai-oshirase.html'

headers = {
    'User-Agent':
    'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko'
}

r = requests.get(url, headers=headers)

if r.status_code == requests.codes.ok:

    soup = BeautifulSoup(r.content, 'html5lib')

    pdf_url = urljoin(
        url,
        soup.find('a', text=re.compile('^平成30年7月豪雨による被害状況等について')).get('href'))

    # ファイル名作成
    filename = os.path.basename(pdf_url)

    # PDFファイルをダウンロード
    res = requests.get(pdf_url)

    if res.status_code == requests.codes.ok:

        # PDFファイルを保存
        with open(filename, 'wb') as fw:
            fw.write(res.content)

        # PDFファイルをTEXTに変換
        cmd = 'java -jar pdfbox-app-2.0.11.jar ExtractText -sort -encoding UTF-8 {}'.format(
            filename)

        args = shlex.split(cmd)
        p = subprocess.Popen(args)

        p.wait()
    
    print('変換終了')