![0a8dfcfe59a7c4c5c2a7c8eb9877d956.png](https://i-blog.csdnimg.cn/blog_migrate/3cf08372ec5b5c1a87379f20e3109916.jpeg)
使用Python获取天气预报,想想是件很简单的事情。无非是发送一个HTTP请求,再解析请求返回的结果。当你真的使用Python程序去获取天气预报以后,会发现,有不少坑在等着你。这里简单记录一下我遇到的坑,供大家参考。
如何获取
使用Python获取天气有两种不同的方法,一种是像平时爬虫一样,获取天气预报网站的HTML页面,再使用XPath或BeautifulSoup解析HTML页面的内容。这是比较传统的爬虫方式。此外,还有另外一种比较合适的方法——通过天气预报网站提供的API。通过API,直接获取结构化的数据,省去了解析HTML的烦恼。
使用API
搜索"天气预报 API"这两个关键字,会有很多相关的内容,例如,这个
https://wwwzhihu.com/question/20575288
答案下就列出了不少提供API访问天气预报的网站。
然而,大部分都已经不可用了。部分可用的需要收费或者需要注册,都比较麻烦。有没有比较省事的方案呢?找来找去,我找到了中国天气网的API。无需注册直接可用,返回json格式的数据,无需使用BeautifulSoup或XPath解析,非常的方便。赞!
例如,可以直接访问下面的地址,在浏览器中查看中国天气网返回的json数据:
http://www.weather.com.cn/data/sk/101020100.html
有了API处理起来就很简单了,直接使用Python世界最知名的requests访问API即可。
安装requests:
pip install requests
检查安装是否成功:
python -c "import requests"
使用ipython测试:
In [1]: import requestsIn [2]: r = requests.get('http://www.weather.com.cn/data/sk/101020100.html')In [3]: r.status_codeOut[3]: 200In [4]: r.contentOut[4]: '{"weatherinfo":{"city":"xe4xb8x8axe6xb5xb7