首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Wunderground中的HTML数据

解析Wunderground中的HTML数据
EN

Stack Overflow用户
提问于 2012-02-09 05:24:07
回答 2查看 1.5K关注 0票数 2

全,

我正在尝试从trying下载天气数据历史记录。我的问题是我需要完整的METAR信息。

下面是我想要下载的示例:CSV with full METAR

因为我想下载全年的每小时数据,所以我需要编写脚本。但是无论我怎么尝试(使用wget的bash,或者python),我仍然不能通过脚本获得包含完整METAR的页面。

下面是我的脚本示例:

代码语言:javascript
复制
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

我得到的是这样的东西:

代码语言:javascript
复制
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 />

通过web浏览器,这是我得到的--注意一个以METAR开头的新专栏:

代码语言:javascript
复制
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

对此的任何解决方案都将不胜感激。谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-09 06:55:14

Browsing the wunderunderground我找到"Show full METARS"链接了单击此处后,将浏览器指向link you posted"Comma Delimited File" link即可显示METAR数据。看起来像是做了些饼干。例如,page.info()显示"Prefs“包含"SHOWMETAR:1":

代码语言:javascript
复制
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

代码语言:javascript
复制
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

收益率

代码语言:javascript
复制
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 />
票数 3
EN

Stack Overflow用户

发布于 2012-02-09 05:41:18

当我通过浏览器点击该URL时,我看到的数据与您包含的第一个示例相同。在Wunderground站点上浏览一下,似乎有一种方法可以注册开发人员/API帐户--如果您已经这样做了,并且在检索数据时登录了,那么这种差异很可能是由于注册用户可以获得的额外信息造成的。

如果您需要进行身份验证以获得完整的数据,那么值得花时间研究一下如何使用mechanize来帮助您管理cookies。

否则,我怀疑您使用的URL有所不同--扩展的数据可能是用额外的参数指定的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9201647

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档