作者: Kaoru Kusunoki
日時: 2004/3/07(22:17)
こんにちは
こちらへの投稿ははじめてになります。よろしくお願いします。

今回、 Weather Underground のホームページの各都市のお天気情報のみを
テキストに出力するプログラムを書いてみました。
perl では Weather-Underground.pm が CPAN に公開され利用されているようで
す。python で同じような、まただれかプログラムを書いていないか探してみま
したが探せませんでしたので、お恥ずかしながら書いてみました。

もしよろしければ、ごらんいただき。けちの一つでもいただければ幸いです。
ソースは下記に公開しています。コメントを書き込んでいますので参考にして
ください。

リスト、ディクショナリー、正規表現、string 、urllib を使っています。

http://heididorf.cool.ne.jp/blog/archives/000115.htm

ちなみに、上記ホームページに併せて掲載の get_weather_v3.py については
なぜかむちゃくちゃ時間がかかります。どうも正規表現の部分で時間がかかって
るようです。もしよろしければ、問題点をご教示いただければうれしいです。

これが問題の src 抜粋

url = "http://mobile.wunderground.com/cgi-bin/findweather/getForecast?query=kanazawa"
f = urllib.urlopen(url)

while 1:
	data = f.readline()
	if string.find(data, "Forecast as") > 0:
		break
data = f.readline()
str = data
while 1:
	data = f.readline()
	str = str + data
	if string.find(data, "/table") > 0:
		break

table = re.split("<tr *>|</tr>", str)

i = 0
nextDay = []
reg = re.compile("(.| |\n)*<td(\n|.| )*(Tod|Ton|Sun|Mon|Tue|Wed|Thu|Fri|Sat)(.*)( +<br>)")
while i < len(table) : 
	table_2 =re.sub("((.|\n)*<td *>)|<b *>|\t", "", table[i])
	table_3 = re.sub("</b *>", " ", table_2)
	table_4 = reg.sub("\g<3>\g<4>", table_3)
	tempList = re.split("</td *>|\n", table_4)
	i = i + 1


またすでに、もっといいものがあるということがあればおしえていただけますか。
よろしくお願いします。
-------------------------------------------
kusunoki@...-inet.or.jp
web http://www.heididorf.net