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

以前のリビジョンの文書です



Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/parser/handler.php on line 1458

Warning: Declaration of syntax_plugin_note::handle($match, $state, $pos, &$handler) should be compatible with DokuWiki_Syntax_Plugin::handle($match, $state, $pos, Doku_Handler $handler) in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/lib/plugins/note/syntax.php on line 79

Warning: Declaration of syntax_plugin_note::render($mode, &$renderer, $indata) should be compatible with DokuWiki_Syntax_Plugin::render($format, Doku_Renderer $renderer, $data) in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/lib/plugins/note/syntax.php on line 101

Warning: preg_match(): Compilation failed: invalid range in character class at offset 3120 in /mnt/hep_web/hep_web/member/n-kota/dokuwiki/inc/parser/lexer.php on line 118
A PCRE internal error occured. This might be caused by a faulty plugin

====== pythonの備忘録 ====== ---- ===== 気象庁HPの各地のアメダス表形式のデータ(.html)から気圧情報を抜き出したい ===== * http://www.jma.go.jp/jp/amedas_h/today-61286.html?areaCode=000&groupCode=44 * 先にwgetでとってきておいて、名前を 20150401.htmlとかに変えておく * 以下 GetPressure.py のコード <code python> #coding:utf-8 ### 引数にパースしたいhtmlをfull pathで渡す ( ./GetPressure.py /home/aaa/..../bbb/20150401.html ) import sys from bs4 import BeautifulSoup argvs = sys.argv argc = len(argvs) if (argc != 2): print "Usage : python %s filename.html"%argvs[0] quit() soup = BeautifulSoup( open(argvs[1]) ) # fileを開いてパーサー(beautifulsoapに渡す) trs = soup.find('table', { "id" : "tbl_list" }) # 気圧情報の記されている表(tbl_list)をとってくる pressure = [] # 各時間の気圧値を入れるための配列を準備 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要素とする配列となる pressure.append(tds[len(tds)-1].string) # tdsの最終要素(=気圧情報)を取ってくる f = open("/home/aaa/..../bbb/Pressure.dat","a") # 出力先ファイルを開く("a"は追記モード) f.write("\n") f.write(argvs[1].replace("/home/aaa/..../bbb/","").replace(".html","")) # 日付部分をファイルに書き込み for x in pressure : f.write( " " + x.replace(u"\xa0"," ")) # 各時間の気圧をスペース区切りでファイルに書き込み 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> を書いて、cron で例えば ''50 0 * * * /home/aaa/..../bbb/GetPress.sh >& /dev/null'' のようにして毎日0:50に実行するようにしておけば良い。

ja/python.1433716768.txt.gz · 最終更新: 2015/06/07 22:39 by kota