LoginSignup
1

More than 3 years have passed since last update.

COCO'S朝食バイキング実施店舗一覧PDFファイルを取得してCSVにする

Last updated at Posted at 2020-09-23

Change Log

(2020/10/13, 22:50)default-jdk不要です。削除しました。
(2020/9/24, 05:30)ソート前のsjis版画像を追加しました。
(2020/9/24, 05:30)sort & uniq処理のスクリプトを少し手直ししました。
(2020/9/25, 05:00)sort & uniq処理のスクリプトを少し手直ししました。

はじめに

COCO'S朝食バイキング実施店舗一覧のPDFファイルを取得してCSVにしてみます。
image.png

なお

  • 本記事ではRaspberryPi 4とPython3.7.3で実行しています。が、そこは大きな依存ポイントにはならず、たいていの環境で動くでしょう。
  • また、出力結果確認は楽なWindows上のExcelとテキストエディタで行っていますが、そこもよしなに。

準備 どこでもいいです

$ pwd
/home/dk4130523/scripts/cocos
$ mkdir -p pdf
$ mkdir -p csv
$ pip3 install tabula-py

スクリプト

pandas2x.py

import pandas as pd
import tabula

for p in range(1,5):
    dfs = tabula.read_pdf("./pdf/bvshoplist.pdf", lattice = True, pages = p)
    for df in dfs:
        df.to_csv("./csv/bvshoplist.sjis.csv", index = None, mode = 'a', encoding = 'shift_jis')
        df.to_csv("./csv/bvshoplist.utf8.csv", index = None, mode = 'a', encoding = 'utf-8')

getbreakfast.sh

#!/bin/bash
# download latest pdf file
wget -O ./pdf/bvshoplist.pdf https://www.cocos-jpn.co.jp/menu_pdf/bvshoplist.pdf

# convert to csv by pandas and tabula
rm -rf ./csv/bvshoplist.csv
python3 ./pandas2x.py

# sort and uniq if required
cat ./csv/bvshoplist.sjis.csv | sort -t. -k1,1n -k2,2n | uniq > ./csv/bvshoplist.u_s.sjis.csv
cat ./csv/bvshoplist.utf8.csv | sort -t. -k1,1n -k2,2n | uniq > ./csv/bvshoplist.u_s.utf8.csv

# copy to some nice location
cp ./csv/bvshoplist.unique.sorted.*.csv /home/pi/Public/cocos/

chmod +x

$ chmod +x ./getbreakfast.sh

実行 トータル20秒くらいです

$ ./getbreakfast.sh
--2020-09-23 17:32:10--  https://www.cocos-jpn.co.jp/menu_pdf/bvshoplist.pdf
Resolving www.cocos-jpn.co.jp (www.cocos-jpn.co.jp)... 52.197.112.230, 52.68.53.187
Connecting to www.cocos-jpn.co.jp (www.cocos-jpn.co.jp)|52.197.112.230|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 524703 (512K) [application/pdf]
Saving to: ‘./pdf/bvshoplist.pdf’

./pdf/bvshoplist.pdf
100%[================>] 512.41K  1.39MB/s    in 0.4s    

2020-09-23 17:32:10 (1.39 MB/s) - ‘./pdf/bvshoplist.pdf’ saved [524703/524703]
$

出力結果確認

保存先

(僕の用途では、ソート&ユニークにしたものだけあれば十分です。ソート&ユニークする前のものも、元の場所に残してあります。今回、ソート&ユニーク後のsjis版とutf8版で、どちらも同じ223行であることのみ確認しました。)
image.png

sjisソート前

image.png

sjisソート後 ラズパイで自動ソートしたものをExcelで開いただけの状態

image.png

utf8

image.png

おしまい

本記事の紹介はここまです。この先は用途に応じて適宜。よかったですね。😺💕

参考

大いに参考にさせていただきました。ありがとうございました。😺💕
【自動化】PDF内の表をPythonで抜き出す

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