2012-02-08 18 views
2

すべて、WundergroundからのHTMLデータの解析

Wundergroundから天気データの履歴をダウンロードしようとしています。私が持っている問題は、完全なMETAR情報が必要なことです。

ここには、ダウンロードしたい例があります:CSV with full METAR

1年間のデータをダウンロードしたいので、スクリプトを作成する必要があります。しかし、私が何を試しても(wgetやpythonのbash)、スクリプトを使って完全なMETARを持つページを手に入れることはできません。ここで

は私のスクリプトの例である:私が持っているもの

import urllib2 
from BeautifulSoup import BeautifulSoup 
url = "http://www.wunderground.com/history/airport/KBUF/2011/1/1/DailyHistory.html?theprefset=SHOWMETAR&theprefvalue=1&format=1" 
page = urllib2.urlopen(url) 
dailyData = page.read()        
print dailyData 

のようなものです:ウェブブラウザ専用を通じて

12:54 AM,52.0,45.0,77,29.93,10.0,SSW,15.0,-,N/A,,Scattered Clouds,200,2011-01-01 05:54:00<br /> 
1:54 AM,53.1,45.0,74,29.95,10.0,SSW,12.7,-,N/A,,Mostly Cloudy,200,2011-01-01 06:54:00<br /> 
2:54 AM,50.0,44.1,80,29.95,10.0,SSW,8.1,-,N/A,,Mostly Cloudy,200,2011-01-01 07:54:00<br /> 
3:54 AM,51.1,44.1,77,29.93,10.0,SSE,5.8,-,N/A,,Scattered Clouds,150,2011-01-01 08:54:00<br /> 

、これは私が得るものである - を開始する新しい列に注意してくださいMETAR:

12:54 AM,52.0,45.0,77,29.93,10.0,SSW,15.0,-,N/A,,Scattered Clouds,METAR KBUF 010554Z COR 20013KT 10SM FEW045 SCT140 11/07 A2992 RMK AO2 SLP134 60004 T01110072 10111 20078 58016,200,2011-01-01 05:54:00 
1:54 AM,53.1,45.0,74,29.95,10.0,SSW,12.7,-,N/A,,Mostly Cloudy,METAR KBUF 010654Z 20011KT 10SM BKN055 BKN130 12/07 A2994 RMK AO2 SLP141 T01170072,200,2011-01-01 06:54:00 
2:54 AM,50.0,44.1,80,29.95,10.0,SSW,8.1,-,N/A,,Mostly Cloudy,METAR KBUF 010754Z 20007KT 10SM BKN050 BKN130 10/07 A2994 RMK AO2 SLP140 T01000067,200,2011-01-01 07:54:00 
3:54 AM,51.1,44.1,77,29.93,10.0,SSE,5.8,-,N/A,,Scattered Clouds,METAR KBUF 010854Z 15005KT 10SM SCT050 SCT130 11/07 A2992 RMK AO2 SLP134 T01060067 58000,150,2011-01-01 08:54:00 

これに対する解決策はあります。ありがとう!

+0

あなたが提供されたリンクは、Firefoxで私のMETARを与えるものではありませんが - 多分あなたは自分が思っているリンクを使用していませんか? – jjlin

+0

@jjlin:これはクロムに 'METAR'を与えます。 – RanRag

答えて

3

Browsing the wunderunderground"Show full METARS"が見つかりました。そこをクリックした後、ブラウザでlink you postedまたは"Comma Delimited File" linkを指すと、METARデータが表示されます。いくつかのクッキーを設定するようです。例えば、page.info()は、 "環境設定" は ":1 SHOWMETAR":含まれていることを示して

Set-Cookie: Prefs=FAVS:1|WXSN:1|PWSOBS:1|WPHO:1|PHOT:1|RADC:0|RADALL:0|HIST0:NULL|GIFT:1|SHOWMETAR:1|PHOTOTHUMBS:50|HISTICAO:KBUF*NULL|; path=/; expires=Fri, 01-Jan-2020 00:00:00 GMT; domain=.wunderground.com 

import urllib2 
import cookielib 

cookieJar = cookielib.CookieJar() 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar)) 

setmetar = 'http://www.wunderground.com/cgi-bin/findweather/getForecast?setpref=SHOWMETAR&value=1' 
request = urllib2.Request(setmetar) 
response = opener.open(request) 

url = "http://www.wunderground.com/history/airport/KBUF/2011/1/1/DailyHistory.html?theprefset=SHOWMETAR&theprefvalue=1&format=1" 
request = urllib2.Request(url) 
page = opener.open(request) 
# print(page.info()) 
dailyData = page.read()        
print dailyData 

利回り

TimeEST,TemperatureF,Dew PointF,Humidity,Sea Level PressureIn,VisibilityMPH,Wind Direction,Wind SpeedMPH,Gust SpeedMPH,PrecipitationIn,Events,Conditions,FullMetar,WindDirDegrees,DateUTC<br /> 
12:54 AM,52.0,45.0,77,29.93,10.0,SSW,15.0,-,N/A,,Scattered Clouds,METAR KBUF 010554Z COR 20013KT 10SM FEW045 SCT140 11/07 A2992 RMK AO2 SLP134 60004 T01110072 10111 20078 58016,200,2011-01-01 05:54:00<br /> 
1:54 AM,53.1,45.0,74,29.95,10.0,SSW,12.7,-,N/A,,Mostly Cloudy,METAR KBUF 010654Z 20011KT 10SM BKN055 BKN130 12/07 A2994 RMK AO2 SLP141 T01170072,200,2011-01-01 06:54:00<br /> 
+0

Yiihaa!これはうまくいく...タクシー! – ery

0

ブラウザでそのURLにヒットしたときに表示されるデータは、最初に挿入したサンプルと同じです。 Wundergroundサイトを覗いてみると、開発者/ APIアカウントに登録する方法があるようです。これを行って、データを取得するときにサインインした場合、その不一致は、登録ユーザー。

完全なデータを取得するために認証する必要がある場合は、mechanizeを使用してCookieを管理するのに十分な時間があります。

それ以外の場合は、使用しているURLに違いがあると思われます。拡張されたデータはおそらく追加引数で指定されている可能性があります。

+0

他の回答が指摘したように、答えはクッキーです。 – ery

関連する問題