総務省「日本産業分類」CSVをあるだけ取ってくる
はじめに
にゃーん😺💕
総務省「日本産業分類」CSVをあるだけ取ってくるやつです。
このコードは何がいいのか
日本標準産業分類
- 階層がちょっと深い
- 現行と過去があって提供コンテンツにばらつきがある
- マーケティング実務で役に立つ=ほしいのは、最新の「分類項目名」CSVだけ
- 日本標準産業分類は数年おきに改定がある=ほしい先のURLが変わる
- ファイル名の採番がお役所独自のもので覚えていられない
- ソースコードを少し変えれば、公開されているPDFも取得できる
上記にすべて対応しています。
動作環境
- Python 3.7.3
- Debian GNU/Linux 10 \n \l (#RaspberryPi 4)
コード開陳
#!/usr/bin/env python3
# coding: utf-8
### import
import os
import re
import sys
import requests
from bs4 import BeautifulSoup
import urllib.request
### variables
base_url = "https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/index.htm"
outputtxtlist = "./txt/sangyoguidelist.txt"
outputcsvlist = "./txt/sangyocsvlist.txt"
outputcsvdir = "./csv/"
outputcsvfile = "*.csv"
aelements = ""
prefixurl = "https://www.soumu.go.jp"
postfixurl = "[0-9]{2,3}index.htm"
### parser (01)
html = requests.get(base_url)
html.encoding = "shift_jis"
soup = BeautifulSoup(html.text, "html.parser")
aelements = soup.find_all("a")
#### if outputlist_file exists
if os.path.exists(outputtxtlist):
os.remove(outputtxtlist)
if os.path.exists(outputcsvlist):
os.remove(outputcsvlist)
### parse and writeout sangyolist.txt (stage 03)
for i in aelements:
ahrefurl = i.get("href")
if ahrefurl is not None:
mpost = re.search(r"[0-9]{2,3}index.htm", ahrefurl)
if mpost and "http" not in ahrefurl:
with open(outputtxtlist, mode="a") as f:
f.write(prefixurl + ahrefurl + "\n")
f.close()
### get links with specific postfix such as csv or pdf (stage 04)
with open(outputtxtlist) as f:
lines = f.readlines()
f.close()
for j in lines:
html = requests.get(j.rstrip("\n"))
html.encoding = "shift_jis"
soup = BeautifulSoup(html.text, "html.parser")
aelements = soup.find_all("a")
for k in aelements:
ahrefurl = k.get("href")
if ahrefurl:
mpost = re.search(r"csv", ahrefurl)
if mpost:
with open(outputcsvlist, mode="a") as f:
f.write(prefixurl + ahrefurl + "\n")
f.close()
### download csv file(s) and save locally as binary (stage 05)
with open(outputcsvlist) as f:
lines = f.readlines()
f.close()
for m in lines:
mstripped = m.rstrip("\n")
csvfilename = os.path.basename(mstripped)
with urllib.request.urlopen(mstripped) as webf:
data = webf.read()
with open(outputcsvdir + csvfilename, mode="wb") as localf:
localf.write(data)
localf.close()
webf.close()
### end of this script
実行方法
'''
$ python3 getsangyolist.py
'''
10秒かからないと思います。
アウトプットは、./txt配下と./csv配下に保存されます。
出力
sangyoguidelist.txt
$ cat sangyoguidelist.txt
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/19index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/14index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/59index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/51index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/47index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/42index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/38index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/32index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/29index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/28index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/26index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/24index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/sangyo/H25index.htm
https://www.soumu.go.jp/toukei_toukatsu/index/seido/shokgyou/21index.htm
./txt 配下。
CSVのリンク元の案内ページの一覧です。
最新のH25年版は H25 とあるやつです。そこは実務の運用解決でお願いします。
これのコピペでもマニュアルに役立つかと思います。
sangyocsvlist.txt
$ cat sangyocsvlist.txt
https://www.soumu.go.jp/main_content/000420038.csv
https://www.soumu.go.jp/main_content/000587432.csv
https://www.soumu.go.jp/main_content/000587431.csv
./txt 配下。
元の案内ページに貼られたリンクです。ここから落としてきます。
最新のH25年版は 000420038.csv です。そこは実務の運用解決でお願いします。
これのコピペでwget / curlしても役立つかと思います。
取得したファイル
81289 Sep 26 12:20 000420038.csv
12491 Sep 26 12:20 000587431.csv
12491 Sep 26 12:20 000587432.csv
./csv 配下。
文字化けしません
sambaするなどして共有した先でダブルクリックでExcelで開いてGoです。
おしまい
(´(ェ)`)「デジタル庁が5年かかるとかいっているので、むしゃむしゃしてやった。まったく反省していない」
よかったですね。にゃーん。😺💕
Author And Source
この問題について(総務省「日本産業分類」CSVをあるだけ取ってくる), 我々は、より多くの情報をここで見つけました https://qiita.com/dk4130523/items/f88bf6f452ff958c4e7a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .