貿易統計をチェックしよう

[貿易統計](http://www.customs.go.jp/toukei/info/)は、日本で１番アクセス数が多い統計です。
税関別まで細かく集計してあり、面白いのですが、困ったことに、品目別にみたとき、税関別の集計と全国の集計はかなり異なります。１年間で、４６０億円くらい異なる品目があります。でも、しょうがないのです。
[よくある質問](http://www.customs.go.jp/toukei/sankou/howto/faq.htm#110)の２５にあるように、「営業上の秘密が開示されることとなる場合には、法令に従い当該数量及び金額を明らかにしないことが可能です。」

それで、税関別と全国でどのくらい違いがあるかをチェックするツールをつくりました。
検証用のデータは [nysol](http://www.nysol.jp/) でさくっとだしてあります。

HS code 000000099 は中身不明なので、2017.7 の 271500000 アスファルトの輸出を検証します。

```
month,exp_imp,hs9,custom,ym,diff%0nr
03,2,000000099,120908370,115526438,5381932
05,2,000000099,90818053,86161077,4656976
07,1,271500000,4389811,418628,3971183
07,1,270400000,1043325,4856374,3813049
01,2,000000099,98350727,94579057,3771670
06,2,000000099,115329286,111587594,3741692
07,2,000000099,87160101,83640517,3519584
03,2,271500000,3217876,5196,3212680
04,1,392690000,20736504,17827751,2908753
04,1,390690100,6832529,9741282,2908753
06,1,390690100,6748723,9471058,2722335
06,1,392690000,20408903,17686568,2722335
04,1,271500000,2969493,293092,2676401
02,2,000000099,90102507,87456945,2645562
03,1,390690100,7079769,9712735,2632966
03,1,392690000,20455226,17822260,2632966
04,2,000000099,84141728,81518058,2623670
04,1,270400000,1637355,4006860,2369505
05,2,271500000,2360699,7438,2353261
```


selenium,BeautifulSoup + PhantomJS を使います。実際に使う場合にはインストールしてください。

exp_imp=1 # 1 輸出 2 輸入
year=2017
month='07' # ゼロ補完の月　使うときは、整数に戻す
hs9='271500000' #アスファルト
custom_total,total = check_custom_total(exp_imp,year,month,hs9)
税関別、全国
(4389811, 418628)
なんで、税関別の方が多くなるのだろう。不思議です。

```
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
import time
from bs4 import BeautifulSoup
def check_custom_total(exp_imp,year,month,hs9):

    url ='http://www.customs.go.jp/toukei/srch/index.htm?M=09&P=1,{exp_imp},,,,,,,,1,0,'
    url = url + '{year},0,{month},0,2,{hs9},,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,200'
    print(url.format(exp_imp=exp_imp,year=year,month=month,hs9=hs9))
    driver = webdriver.PhantomJS()
    driver.implicitly_wait(5) 
    driver.get(url.format(exp_imp=exp_imp,year=year,month=month,hs9=hs9))
    time.sleep(3)
    driver.switch_to_frame('FR_M_INFO')
    trs = BeautifulSoup(driver.page_source,'lxml').find_all('table')[2].find_all('tr')
    rsl={}
    r_total = 0
    for tr in trs[3:]:
        sTotal = tr.find('td',class_='left_sTotal')
        if sTotal is not None :
            rsl[sTotal.text[1:4]] ={}
            rsl[sTotal.text[1:4]]['country'] = sTotal.text[5:-3]
            rsl[sTotal.text[1:4]]['Value'] = tr.find_all('td')[5].text
            try:
                rsl[sTotal.text[1:4]]['Value'] = int(rsl[sTotal.text[1:4]]['Value'])
            except:
                rsl[sTotal.text[1:4]]['Value'] = 0
            r_total = r_total + rsl[sTotal.text[1:4]]['Value']
    custom_total = r_total

    url = 'http://www.customs.go.jp/toukei/srch/index.htm?M=01&P=1,{exp_imp},,,,,,,,1,0,'
    url = url + '{year},0,{month},0,2,{hs9},,,,,,,,,,1,,,,,,,,,,,,,,,,,,,,,,200'
    print(url.format(exp_imp=exp_imp,year=year,month=month,hs9=hs9))
    driver = webdriver.PhantomJS()
    driver.implicitly_wait(5) 
    driver.get(url.format(exp_imp=exp_imp,year=year,month=month,hs9=hs9))
    time.sleep(3)
    driver.switch_to_frame('FR_M_INFO')
    tables = BeautifulSoup(driver.page_source,'lxml').find_all('table')
    total = int(tables[2].find_all('tr')[2].find_all('td')[5].text)
    return(custom_total,total)
```