Python에서 스크레이핑구 무역 통계에서 사용하는 수출 품목 분류를 Pyhotn에서 자동 취득

이 문서의 테마



Pyhon을 사용하여 쓸모없는 웹 페이지의 데이터를 멋지게 CSV 출력에! !

무엇을 하고 싶었는가?



e-stat 에서 제공되는 보통무역통계를 다운로드하자 품목이 HS코드라는 통계 품목코드가 되어 있어 어느 품목인지 마스터를 다운로드하고 싶었다.

다운로드하고 싶은 데이터가 존재합니까?



결론부터 말하면 존재하지 않는다.
세관의 사이트 (아래 그림)와 같이 품목의 큰 프레임의 분류마다 html의 테이블 태그가 작성되어, 드래그 해 스프레드 시트 소프트웨어에 붙여 넣습니다. . . 한 번에 할 수 없게 되어 있다.
손 조작으로 가려고 하면 21회도 드랙&페이스트 하지 않으면 안 된다고 생각하면
매우 심리적 부하가 높고, 잘 생기지 않는다! !
(오픈 데이터라든가 말해 두면서 마스터 데이터가 이용하기 어렵게 되어 있는 것은 매우 유감.)



무엇을 했는가



Pyhotn에 의한 웹 스크래핑으로 CSV에 저장하는 코드를 작성!

코드



makeCSV_HScode.py
import sys
import re
from urllib.request import urlopen
from html import unescape
import csv

def main():

    # 輸出統計品目表のURL(2019年4月版を入手)
    f=urlopen('https://www.customs.go.jp/yusyutu/2019_4/index.htm')

    # エンコード指定
    encoding=f.info().get_content_charset(failobj="shift-jis")

    # 指定されたURLを指定エンコードで読む
    html = f.read().decode(encoding)

    # CSVファイルのヘッダ項目書き込み
    writecsv('HSCodelist.csv','w','分類','内容')

    # 指定されたURLの一部を読み取り、正規表現で指定された内容を1行として切り出し、文字処理を行う。
    for partial_html in re.findall(r'(<td width="10%" nowrap="nowrap">第..類</td><td>\S*</td>)' ,html,re.DOTALL):
        strcd=re.search(r'(第.*類)</td>',partial_html).group(0)
        strcd=strcd[1:3]
        strcd=int(strcd)


        name=re.search(r'(<td>\S*)',partial_html).group(0)
        offset=len(name)-5
        name=name[4:offset]

        # CSVファイルへの書き込み
        writecsv('HSCodelist.csv','a',strcd,name)

# CSVへの書き込み関数    
def writecsv(filename,mode,value_No,value_str):

    with open(filename,mode,newline='',encoding='cp932') as f:
        writer= csv.writer(f,lineterminator='\n')
        writer.writerow([value_No,value_str])


if __name__ =='__main__':
    main()

빠진 곳



지정된 URL의 일부를 읽어, 정규 표현으로 지정된 내용을 1 행으로서 잘라내는 부분.
정규 표현에 익숙하지 않았기 때문에, 분류 코드(HS 코드)의 선두 2자리수에 상당하는 「제xx류」라고 분류명을 1세트로 해 꺼내는 곳.
시행착오 후, 취득할 수 있었다.

결과



아래 그림과 같이 CSV 데이터 취득 완료! !

좋은 웹페이지 즐겨찾기