var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-333696-1']); _gaq.push(['_trackPageview']); _gaq.push(['_trackPageLoadTime']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();
  • 2011年03月09日

    GAE Python天气预报

    分类:

    虽然前文提到的免费资源仍然还可以用,但感觉数据不太准确,于是换用中国天气网的天气预报7天)。不同于先前容易地抓取XML,现在需要解析城市所在网页。注:此网站还有两个数据源:1.返回Json数据(6天):http://m.weather.com.cn/data/[CityCode].html2.Wap网页(5天):http://wap.weather.com.cn/wap/weather/[CityCode].shtml

     

    这时用到了一款优秀的开源Python解析HTML网页的库Beautiful Soup,我用的是版本3.2.0,其帮助不全但比没有强。由于中国天气网的网页连接为Keep-Alive、传输编码为chunked(httplib已支持),所以选用开源的Pythonhttplib2下载网页。

     

    具体解析的思路是其数据显示在table标签中,以此为主以此抓取相应标签中的内容,然后用逻辑将其串联起来,Google 文件中的excel中有抓取网页的api也是采用了这种思路。需要注意,这个网站页面随着时间变化而呈现不同数量的表格,还有日期在周六日标签不同。

     

    在调试python过程中又遇到了该死的编码问题,一定要注意所有需要编码一起输出的变量在输出前进行相同编码转换;还有print可以极大地辅助调试,但它同变量赋值和输出还是不同。

     

    先前所用的天气预报,由于上面用户众多,发送短信时间没一次不推延的,所以暂停使用,用刚搭建好自己的服务。

    分享到:

    历史上的今天:

    Android 软件术语 2012年03月09日
    为何事后调试会失效 2009年03月09日
    Diagnostic Formula 2007年03月09日