Deprecated: Array and string offset access syntax with curly braces is deprecated in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/init.php on line 542
ja:python [GiriWiki]

ユーザ用ツール

サイト用ツール


ja:python

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

次のリビジョン
前のリビジョン
ja:python [2015/06/07 21:52]
kota 作成
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>
 #​coding:​utf-8 ​                                                                                                                                                                       #​coding:​utf-8 ​                                                                                                                                                                      
  
-### 引数に元のhtmlをfull pathで渡す ( ./​GetPressure.py /​home/​aaa/​..../​bbb/​20150401.html )+### 引数にパースしたいhtmlをfull pathで渡す ( ./​GetPressure.py /​home/​aaa/​..../​bbb/​20150401.html )
  
 import sys import sys
ライン 23: ライン 24:
     quit()     quit()
  
-soup = BeautifulSoup( open(argvs[1]) ) +soup = BeautifulSoup( open(argvs[1]) ​) # fileを開いてパーサー(beautifulsoapに渡す
-trs = soup.find('​table',​ { "​id"​ : "​tbl_list"​ })+trs = soup.find('​table',​ { "​id"​ : "​tbl_list"​ }) # 気圧情報の記されている表(tbl_list)をとってくる
 pressure = [] # 各時間の気圧値を入れるための配列を準備 pressure = [] # 各時間の気圧値を入れるための配列を準備
  
-for tr in trs.findAll('​tr'​)[2:​]:​ +for tr in trs.findAll('​tr'​)[2:​]: ​# 配列の要素でloop。trs.findAll('​tr'​)はtrsを区切って<​tr>​ ... </​tr>​で囲まれた部分を 
-    tds = tr.findAll('​td'​) +                                 # 1要素とする配列にしている。 
-    pressure.append(tds[len(tds)-1].string)+                                 # [2:​]は、0,​1番目の要素(表のheaderに当たる部分)をスキップするという意味 
 +    tds = tr.findAll('​td'​) ​# tdsは<​td ...> .... </​td>​で囲まれた部分を1要素とする配列となる 
 +    pressure.append(tds[len(tds)-1].string) ​# tdsの最終要素(=気圧情報)を取ってくる
  
 f = open("/​home/​aaa/​..../​bbb/​Pressure.dat","​a"​) # 出力先ファイルを開く("​a"​は追記モード) f = open("/​home/​aaa/​..../​bbb/​Pressure.dat","​a"​) # 出力先ファイルを開く("​a"​は追記モード)
ライン 38: ライン 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>​
 +
 +
ja/python.1433713947.txt.gz · 最終更新: 2015/06/07 21:52 by kota