自古逢秋悲寂寥,奈何今秋热成雕?Python使用Pyecharts统计全国温度Top10并绘图
秋词—刘禹锡
自古逢秋悲寂寥,
我言秋日胜春朝。
晴空一鹤排云上,
便引诗情到碧霄。
古人谈及秋天,都是悲凉寂寥,那么….我好想回到古代的秋天啊!明明到了秋天,为什么最近的气温比夏天还热。
之前做天气预报自动推送小工具的时候,爬过中国天气网
http://www.weather.com.cn/forecast/,今天就再盘它一次,来看看全国天气吧
首先进入中国天气网,有一个国内天气预报的栏目:
如上图所示,网站将中国分为:
华为、东北、华南、西北、西南、华东、华中,西安属于西北,进去看看:
网站有一个设置,只要过了当天的6点,那么当天的白天温度就清空了…所以我们就来看看,明天全国天气Top10吧!
看到这温度,我就想说,三伏天的温度也不过如此吧….
咱们来分析下这张图,每个省的第一个城市都是省会城市,省内的温度差别不大,那我们就把全国每个省会城市的温度进行比较吧,至于港澳台…暂且不分析。
网站分析
网站html分析
每日天气
<div class="conMidtab">
conMidtab一共有7个,后6个添加了隐藏样式style="display:none;",是后6天的天气预报,既然咱们看的是明天天气,就选择第二个吧…各省天气
<div class="conMidtab2">
每个省份的数据都包过在这个div中,只要findAll即可省会城市
<tr style="background-color: rgb(255, 255, 255);">
表格中的前两个tr应该用th做标题的,所以从第三个tr就是省会城市的温度信息了数据获取
省会城市名称、最高温度、最低温度 分别在1、4、7的td中,findALL后,这么规律的排序直接使用列表切片[1:8:3]即可获取
数据汇总分析
刚才分析了西北地区的数据获取,然后再看看西南。
西北地域的数据url为:http://www.weather.com.cn/textFC/xb.shtml
再看看西南地域的url:http://www.weather.com.cn/textFC/xn.shtml
简直不要太欢乐,url只有最后的地域拼音头不一样,可以开启for循环模式了!
遍历7个地域,然后获取每个地域下的省会城市,最终保存到一个列表中,样式大致如下
数据展示
数据趴好了,返回一串数组?这怎么符合处女座追求完美的行事风格!
python绘图的模块很多,多数人都用Matplotlib,但是…
渣男锡纸烫,渣女大波浪,而我不一样,积极又向上。
所以不一样的我使用pyecharts….
今天用pyecharts绘图,让大家看看python集成echarts后的绘图效果如何。
代码实现
模块准备
如果你是首次使用爬虫和echarts绘图,需要关注一下模块的安装:
pip install requests
install beautifulsoup4
pip install lxml # bs4的解析依赖库
pip install pyecharts
关于pyecharts的更新
网上铺天盖地的pycharts都是来回转来转去的0.3.x、0.5.x的版本
pyecharts 19年4月份已经更新到1.1.0了,其中不管是模块导入还是插件的使用,变更都比较大。
所以网上的那列介绍,如果是python3.6+你就别看了,不适合你,连代码引入都会报错。
有人说可以指定旧版本啊,可既然出了新版本,你又何必杠精的去学习旧的版本?
看看pyecharts的github:https://github.com/pyecharts/pyechart
网站底部有专门的中、英文文档,喜欢的朋友可以去仔细瞧瞧…
代码实现
# -*- coding: utf-8 -*-
# @Author : 王翔
# @JianShu : 清风Python
# @Date : 2019/8/15 21:39
# @Software : PyCharm
# @version :Python 3.7.3
# @File : TempComparison.py
import requests
from bs4 import BeautifulSoup
from pyecharts.charts import Line
import datetime
class TempComparison:
def __init__(self):
self.cityInfoList = []
def get_request(self):
areas_list = ['hb', 'db', 'hd', 'hz', 'hn', 'xb', 'xn']
headers = {
'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/70.0.3538.67 Safari/537.36',
'Referer': 'http://www.weather.com.cn/textFC/xn.shtml'
}
for area in areas_list:
req = requests.get("http://www.weather.com.cn/textFC/%s.shtml" % area,
headers=headers)
content = req.content.decode('utf-8')
soup = BeautifulSoup(content, 'lxml')
for line in soup.findAll('div', {'class': 'conMidtab'})[1].findAll('div', {'class': 'conMidtab2'}):
td_list = line.findAll('tr')[2].findAll('td')[1:8:3]
self.cityInfoList.append(list(map(lambda x: x.text.strip(), td_list)))
print(self.cityInfoList)
def filter_result(self):
top_city_info = sorted(self.cityInfoList, key=lambda x: x[1], reverse=True)[:10]
city, high_temp, low_temp = list(zip(*top_city_info))
now = datetime.datetime.now()
tommorrow = (now + datetime.timedelta(days=1)).strftime("%Y-%m-%d")
charts_bar = (
Line()
.set_global_opts(
title_opts={"text": "省会城市温度Top10 清风Python",
"subtext": tommorrow})
.add_xaxis(city)
.add_yaxis("高温", high_temp, color='#C3322D') # is_symbol_show=True, is_smooth=True,
.add_yaxis("低温", low_temp, color='#399EFF')
)
charts_bar.render('TempComparison.html')
if __name__ == '__main__':
main = TempComparison()
main.get_request()
main.filter_result()
代码执行完成后,会生成一个TempComparison.html的文件
效果展示:
The End
OK,今天的内容就到这里,如果觉得内容对你有所帮助,欢迎点击文章右下角的“在看”。
期待你关注我的公众号清风Python,如果觉得不错,希望能动动手指转发给你身边的朋友们。
作者:清风Python
自古逢秋悲寂寥,奈何今秋热成雕?Python使用Pyecharts统计全国温度Top10并绘图的更多相关文章
- Java程序设计8——抽象类、接口与内部类
1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由 ...
- POJ1475 推箱子---模块化思想
自古逢秋悲寂寥,我言秋日胜春朝. 晴空一鹤排云上,便引诗情到碧霄. --刘禹锡 题目:推箱子 网址:http://poj.org/problem?id=1475 推箱子游戏相信大家都不陌生,在本题中, ...
- 【LeetCode】572. 另一个树的子树 Subtree of Another Tree(Python & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 方法一:先序遍历 方法二:DFS + DFS 方法三 ...
- 【LeetCode】519. Random Flip Matrix 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/random-fl ...
- 【LeetCode】825. Friends Of Appropriate Ages 解题报告(Python)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址:https://leetcode.com/problems/friends-o ...
- 【腾讯bugly干货分享】微信Android热补丁实践演进之路
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1264& ...
- 微信Android热补丁实践演进之路
版权声明:本文由张绍文原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/81 来源:腾云阁 https://www.qclou ...
- python:王思聪究竟上了多少次热搜?
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 朱小五 凹凸玩数据 PS:如有需要Python学习资料的小伙伴可以加 ...
- ms_celeb_1m数据提取(MsCelebV1-Faces-Aligned.tsv)python脚本
本文主要介绍了如何对MsCelebV1-Faces-Aligned.tsv文件进行提取 原创by南山南北秋悲 欢迎引用!请注明原地址 http://www.cnblogs.com/hwd9654/p/ ...
随机推荐
- CSPS_101
T1 众所周知,只要在任意三个方向上有连续五颗棋子,游戏即结束. T2 又是最短路优化dp啦. T3 神奇的期望dp.还没改出来. 改出来啦!
- NOIP模拟 38
liu_runda的题! 错过辽QAQ T1虽然没用题解的损益法,但是用高精%还能过.. 没想到敲完就过编译了,还以为要调一天呢 高精度的阴影没了- T2的思路很巧妙 首先一个区间最多有一种颜色占一半 ...
- 前端与算法 leetcode 1. 两数之和
目录 # 前端与算法 leetcode 1. 两数之和 题目描述 概要 提示 解析 解法一:暴力法 解法二:HashMap法 算法 传入[1, 2], [11, 1, 2, 3, 2]的运行结果 执行 ...
- 如何修改git上传代码的作者姓名
随着IT行业的不断壮大,开源的东西越来越多,使用git来进行代码管理的人自然也越来越多,而且很多人的git账户都不是自己的本人名字,但是在公司工作的时候为了遇到问题能够定位责任人和便于区分提交人,通常 ...
- NOI导刊总结
NOI导刊总结 前两天去郑州,参加了什么NOI导刊的培训,然后就发现大佬是真的多,还十分意外的发现了一个事,清华北大是不是发笔记本和耳机,为啥三个老师的都一模一样... 这几天主要以讲.NOIP知识点 ...
- 基于 ThinkPHP5 + Bootstrap 的后台开发框架 FastAdmin
FastAdmin是一款基于 ThinkPHP5 + Bootstrap 的极速后台开发框架. 主要特性 基于Auth验证的权限管理系统 支持无限级父子级权限继承,父级的管理员可任意增删改子级管理员及 ...
- Linux 常用命令 | top 详解
top 命令实时显示进程的状态.(自己也会占用资源,类似window的任务管理器),由以下几部分组成 默认状态显示的是cpu密集型的进程,并且每5秒钟更新一次. (1) 系统状态 当前时间.系统已运行 ...
- iOS地理反地理编码--CoreLocation
.sidebar{float:left;width:220px;} .container-fluid>.content{margin-left:240px;} a{color:#0069d6;t ...
- linux服务器MySQL数据从磁盘拷贝以及恢复
偶有感触:遇到这个问题,经过一个下午的排查, 终于解决. 故事情节:我的阿里云服务器突然被黑客攻击了,整个系统down了. 找客服,他们排查说usr目录的文件全部丢失.让我重新初始化系统盘.初始化之前 ...
- Swoole和Redis实现的并发队列处理系统
由于PHP不支持多线程,但是作为一个完善的系统,有很多操作都是需要异步完成的.为了完成这些异步操作,我们做了一个基于Redis队列任务系统. 大家知道,一个消息队列处理系统主要分为两大部分:消费者和生 ...