この文書の現在のバージョンと選択したバージョンの差分を表示します。
| 両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
|
ja:python [2015/06/07 22:20] kota [気象庁HPの各地のアメダス表形式のデータ(.html)から気圧情報を抜き出したい] |
ja:python [2015/06/10 19:59] (現在) kota [気象庁HPの各地のアメダス表形式のデータ(.html)から気圧情報を抜き出したい] |
||
|---|---|---|---|
| ライン 7: | ライン 7: | ||
| * http://www.jma.go.jp/jp/amedas_h/today-61286.html?areaCode=000&groupCode=44 | * http://www.jma.go.jp/jp/amedas_h/today-61286.html?areaCode=000&groupCode=44 | ||
| * 先にwgetでとってきておいて、名前を 20150401.htmlとかに変えておく | * 先にwgetでとってきておいて、名前を 20150401.htmlとかに変えておく | ||
| + | * 以下 GetPressure.py のコード | ||
| <code python> | <code python> | ||
| ライン 25: | ライン 26: | ||
| soup = BeautifulSoup( open(argvs[1]) ) # fileを開いてパーサー(beautifulsoapに渡す) | soup = BeautifulSoup( open(argvs[1]) ) # fileを開いてパーサー(beautifulsoapに渡す) | ||
| trs = soup.find('table', { "id" : "tbl_list" }) # 気圧情報の記されている表(tbl_list)をとってくる | trs = soup.find('table', { "id" : "tbl_list" }) # 気圧情報の記されている表(tbl_list)をとってくる | ||
| - | # trsは<tr> ... </tr>で囲まれた部分を1要素とする配列となる | ||
| pressure = [] # 各時間の気圧値を入れるための配列を準備 | pressure = [] # 各時間の気圧値を入れるための配列を準備 | ||
| - | for tr in trs.findAll('tr')[2:]: # 配列の要素でloop。[2:]は、0,1番目の要素(表のheaderに当たる部分)をスキップするという意味 | + | for tr in trs.findAll('tr')[2:]: # 配列の要素でloop。trs.findAll('tr')はtrsを区切って<tr> ... </tr>で囲まれた部分を |
| + | # 1要素とする配列にしている。 | ||
| + | # [2:]は、0,1番目の要素(表のheaderに当たる部分)をスキップするという意味 | ||
| tds = tr.findAll('td') # tdsは<td ...> .... </td>で囲まれた部分を1要素とする配列となる | tds = tr.findAll('td') # tdsは<td ...> .... </td>で囲まれた部分を1要素とする配列となる | ||
| pressure.append(tds[len(tds)-1].string) # tdsの最終要素(=気圧情報)を取ってくる | pressure.append(tds[len(tds)-1].string) # tdsの最終要素(=気圧情報)を取ってくる | ||
| ライン 39: | ライン 41: | ||
| f.close() | f.close() | ||
| + | </code> | ||
| + | 以下のようなscript GetPress.sh | ||
| + | <code bash> | ||
| + | #!/bin/bash | ||
| + | |||
| + | wget --directory-prefix=/home/aaa/..../bbb 'http://www.jma.go.jp/jp/amedas_h/today-61286.html?areaCode=000&groupCode=44'; | ||
| + | mv /home/aaa/..../bbb/'today-61286.html?areaCode=000&groupCode=44' /home/aaa/..../bbb/`date -d '1 days ago' +%Y%m%d`.html; | ||
| + | python /home/aaa/..../bbb/GetPressure.py /home/aaa/..../bbb/`date -d '1 days ago' +%Y%m%d`.html; | ||
| </code> | </code> | ||
| + | |||
| + | を書いて、cron で例えば | ||
| + | |||
| + | ''50 0 * * * /home/aaa/..../bbb/GetPress.sh >& /dev/null'' | ||
| + | |||
| + | のようにして毎日0:50に実行するようにしておけば良い。 | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | ===== shell command を実行したい ===== | ||
| + | subprocessを使う。 | ||
| + | <code python> | ||
| + | import subprocess | ||
| + | |||
| + | subprocess.call(["ls","-l"]) # スペース区切りで区切った文字列のlistを渡す | ||
| + | ### または | ||
| + | # cmd = "ls -l" | ||
| + | # subprocess.call(cmd.strip().split(" ")) | ||
| + | ### でも同じ | ||
| + | </code> | ||
| + | |||
| + | |||