Python에서 스크레이핑구 무역 통계에서 사용하는 수출 품목 분류를 Pyhotn에서 자동 취득
7431 단어 statistics파이썬Python3
이 문서의 테마
Pyhon을 사용하여 쓸모없는 웹 페이지의 데이터를 멋지게 CSV 출력에! !
무엇을 하고 싶었는가?
e-stat 에서 제공되는 보통무역통계를 다운로드하자 품목이 HS코드라는 통계 품목코드가 되어 있어 어느 품목인지 마스터를 다운로드하고 싶었다.
다운로드하고 싶은 데이터가 존재합니까?
결론부터 말하면 존재하지 않는다.
세관의 사이트 (아래 그림)와 같이 품목의 큰 프레임의 분류마다 html의 테이블 태그가 작성되어, 드래그 해 스프레드 시트 소프트웨어에 붙여 넣습니다. . . 한 번에 할 수 없게 되어 있다.
손 조작으로 가려고 하면 21회도 드랙&페이스트 하지 않으면 안 된다고 생각하면
매우 심리적 부하가 높고, 잘 생기지 않는다! !
(오픈 데이터라든가 말해 두면서 마스터 데이터가 이용하기 어렵게 되어 있는 것은 매우 유감.)
무엇을 했는가
Pyhotn에 의한 웹 스크래핑으로 CSV에 저장하는 코드를 작성!
코드
makeCSV_HScode.pyimport 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 데이터 취득 완료! !
Reference
이 문제에 관하여(Python에서 스크레이핑구 무역 통계에서 사용하는 수출 품목 분류를 Pyhotn에서 자동 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rassea777/items/7531f0de6658b875c23b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
e-stat 에서 제공되는 보통무역통계를 다운로드하자 품목이 HS코드라는 통계 품목코드가 되어 있어 어느 품목인지 마스터를 다운로드하고 싶었다.
다운로드하고 싶은 데이터가 존재합니까?
결론부터 말하면 존재하지 않는다.
세관의 사이트 (아래 그림)와 같이 품목의 큰 프레임의 분류마다 html의 테이블 태그가 작성되어, 드래그 해 스프레드 시트 소프트웨어에 붙여 넣습니다. . . 한 번에 할 수 없게 되어 있다.
손 조작으로 가려고 하면 21회도 드랙&페이스트 하지 않으면 안 된다고 생각하면
매우 심리적 부하가 높고, 잘 생기지 않는다! !
(오픈 데이터라든가 말해 두면서 마스터 데이터가 이용하기 어렵게 되어 있는 것은 매우 유감.)
무엇을 했는가
Pyhotn에 의한 웹 스크래핑으로 CSV에 저장하는 코드를 작성!
코드
makeCSV_HScode.pyimport 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 데이터 취득 완료! !
Reference
이 문제에 관하여(Python에서 스크레이핑구 무역 통계에서 사용하는 수출 품목 분류를 Pyhotn에서 자동 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rassea777/items/7531f0de6658b875c23b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Pyhotn에 의한 웹 스크래핑으로 CSV에 저장하는 코드를 작성!
코드
makeCSV_HScode.pyimport 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 데이터 취득 완료! !
Reference
이 문제에 관하여(Python에서 스크레이핑구 무역 통계에서 사용하는 수출 품목 분류를 Pyhotn에서 자동 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rassea777/items/7531f0de6658b875c23b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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 데이터 취득 완료! !
Reference
이 문제에 관하여(Python에서 스크레이핑구 무역 통계에서 사용하는 수출 품목 분류를 Pyhotn에서 자동 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/rassea777/items/7531f0de6658b875c23b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Python에서 스크레이핑구 무역 통계에서 사용하는 수출 품목 분류를 Pyhotn에서 자동 취득), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rassea777/items/7531f0de6658b875c23b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)