天气预报代码(简单的4行Python代码获取)
用Python得到天气预报,想起来很简单。它只不过是发送一个HTTP请求,然后解析请求返回的结果。当你真正用Python获取天气预报时,你会发现有很多坑在等着你。下面是我遇到的坑的简要记录,供大家参考。
这是边肖编写的python学习资料。关注它,转发它,你就可以通过私信边肖“01”得到它!
如何获得
使用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
有了这个应用编程接口,处理起来很容易。只需使用Python,世界上最著名的请求,来访问该API。
安装请求:
pip install requests检查安装是否成功:
python -c "import requests"用ipython测试:
请求库包含一个名为json的方法。当请求的地址以json格式返回数据时,可以使用此方法直接访问,而无需使用标准库的json库。
破解乱码
如果你刚打开我在浏览器中给出的地址,你会发现输出结果是乱码的。如下图所示:
我们可以检查ipython中的数据代码:
我们知道,置乱是因为解码的字符集和编码的字符集不一样,所以有置乱。那么,我们如何知道数据的编码字符集呢?这一次就靠猜测了。众所周知,utf-8由于各种优点是使用最广泛的字符集编码(如果你感兴趣,我可以写一篇关于字符集编码的文章),所以我们可以尝试使用utf-8进行解码。如下图所示:
可以看出,经过utf-8解码后,数据可以正确显示。换句话说,中国天气网返回的数据应该是utf-8格式。那么,为什么会乱码呢?可能是中国天气网的工程师不好,也可能是故意不想我们的被利用,谁知道呢。
我们已经知道正确的编码。接下来,只需解码utf-8格式的相应数据。请求库本身提供了这样的功能,如下所示:
获取不同城市的天气预报。
在前面的例子中,获得了上海的天气预报。想用中国天气网的API获取其他城市的天气预报怎么办?中国天气网没有提供相应的接口,只好自己琢磨了。
在我们测试的网址中,101020100是城市的代码。我们只需要找到其他城市的代码,用相应的代码替换101020100。搜索方式是在中国天气网首页搜索城市名称,地址栏会显示对应城市的代码。如下图所示:
获取天气预报的4行Python代码
在使用Python获取天气预报的例子中,我们的主要任务是找到相应的API,解决字符集编码的问题。当这些问题解决后,只需使用请求库即可获得天气预报。以下是4行Python代码,用于获取您所在城市的天气预报:
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 ZLME@xxxxxxxx@hotmail.com 举报,一经查实,立刻删除。