就在前几天还是二十多度的舒适温度,今天一下子就变成了个位数,小编已经感受到冬天寒风的无情了。之前对获取天气都是数据上的搜集,做成了一个数据表后,对温度变化的感知并不直观。那么,我们能不能用python中的方法做一个天气数据分析的图形,帮助我们更直接的看出天气变化呢?

使用pygal绘图,使用该模块前需先安装pip install pygal,然后导入import pygalbar = pygal.Line()  # 创建折线图

bar.add('最低气温', lows)   #添加两线的数据序列

bar.add('最高气温', highs)  #注意lows和highs是int型的列表

bar.x_labels = daytimes

bar.x_labels_major = daytimes[::30]

bar.x_label_rotation = 45

bar.title = cityname '未来七天气温走向图'   #设置图形标题

bar.x_title = '日期'   #x轴标题

bar.y_title = '气温(摄氏度)'  #  y轴标题

bar.legend_at_bottom = True

bar.show_x_guides = False

bar.show_y_guides = True

bar.render_to_file('temperate1.svg')  # 将图像保存为SVG文件,可通过浏览器查看

最终生成的图形如下图所示,直观的显示了天气情况:

完整代码import csv

import sys

import urllib.request

from bs4 import BeautifulSoup  # 解析页面模块

import pygal

import cityinfo

cityname = input("请输入你想要查询天气的城市:")

if cityname in cityinfo.city:

citycode = cityinfo.city[cityname]

else:

sys.exit()

url = '非常抱歉,网页无法访问'   citycode   '.shtml'

header = ("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36")  # 设置头部信息

http_handler = urllib.request.HTTPHandler()

opener = urllib.request.build_opener(http_handler)  # 修改头部信息

opener.addheaders = [header]

request = urllib.request.Request(url)  # 制作请求

response = opener.open(request)  # 得到应答包

html = response.read()  # 读取应答包

html = html.decode('utf-8')  # 设置编码,否则会乱码

# 根据得到的页面信息进行初步筛选过滤

final = []  # 初始化一个列表保存数据

bs = BeautifulSoup(html, "html.parser")  # 创建BeautifulSoup对象

body = bs.body

data = body.find('div', {'id': '7d'})

print(type(data))

ul = data.find('ul')

li = ul.find_all('li')

# 爬取自己需要的数据

i = 0  # 控制爬取的天数

lows = []  # 保存低温

highs = []  # 保存高温

daytimes = []  # 保存日期

weathers = []  # 保存天气

for day in li:  # 便利找到的每一个li

if i

temp = []  # 临时存放每天的数据

date = day.find('h1').string  # 得到日期

#print(date)

temp.append(date)

daytimes.append(date)

inf = day.find_all('p')  # 遍历li下面的p标签 有多个p需要使用find_all 而不是find

#print(inf[0].string)  # 提取第一个p标签的值,即天气

temp.append(inf[0].string)

weathers.append(inf[0].string)

temlow = inf[1].find('i').string  # 最低气温

if inf[1].find('span') is None:  # 天气预报可能没有最高气温

temhigh = None

temperate = temlow

else:

temhigh = inf[1].find('span').string  # 最高气温

temhigh = temhigh.replace('℃', '')

temperate = temhigh   '/'   temlow

# temp.append(temhigh)

# temp.append(temlow)

lowStr = ""

lowStr = lowStr.join(temlow.string)

lows.append(int(lowStr[:-1]))  # 以上三行将低温NavigableString转成int类型并存入低温列表

if temhigh is None:

highs.append(int(lowStr[:-1]))

else:

highStr = ""

highStr = highStr.join(temhigh)

highs.append(int(highStr))  # 以上三行将高温NavigableString转成int类型并存入高温列表

temp.append(temperate)

final.append(temp)

i = i   1

# 将最终的获取的天气写入csv文件

with open('weather.csv', 'a', errors='ignore', newline='') as f:

f_csv = csv.writer(f)

f_csv.writerows([cityname])

f_csv.writerows(final)

# 绘图

bar = pygal.Line()  # 创建折线图

bar.add('最低气温', lows)

bar.add('最高气温', highs)

bar.x_labels = daytimes

bar.x_labels_major = daytimes[::30]

# bar.show_minor_x_labels = False  # 不显示X轴最小刻度

bar.x_label_rotation = 45

bar.title = cityname '未来七天气温走向图'

bar.x_title = '日期'

bar.y_title = '气温(摄氏度)'

bar.legend_at_bottom = True

bar.show_x_guides = False

bar.show_y_guides = True

bar.render_to_file('temperate.svg')

完整代码看不懂的小伙伴可以翻一下之前的python爬虫天气文章,了解获取天气数据的方法,这里小编就不再重复了。更多Python学习推荐:JQ教程网Python大全。

python爬虫天气数据_python爬虫:天气数据的分析相关推荐

  1. python 正则表达式提取数据_Python爬虫教程-19-数据提取-正则表达式(re)

    本篇主页内容:match的基本使用,search的基本使用,findall,finditer的基本使用,匹配中文,贪婪与非贪婪模式 Python爬虫教程-19-数据提取-正则表达式(re) 正则表达式 ...

  2. python抓取数据库数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储...

    Python爬虫可以说是好玩又好用了.现想利用Python爬取网页股票数据保存到本地csv数据文件中,同时想把股票数据保存到MySQL数据库中.需求有了,剩下的就是实现了. 在开始之前,保证已经安装好 ...

  3. python代码html显示数据_Python爬虫基础之认识html和学习数据提取(上)

    我:我已经学会了基本的python,接下来可以学什么鸭? 惨绿青年:接下来可以学习制作python爬虫了,但还是需要学习相关的知识. 我:什么知识鸭? 惨绿青年:网页的相关知识.我们看到的网页一般是h ...

  4. python二手交易平台代码_PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)...

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  5. python编程理论篇_Python爬虫入门实战之猫眼电影数据抓取(理论篇)

    前言 本文可能篇幅较长,但是绝对干货满满,提供了大量的学习资源和途径.达到让读者独立自主的编写基础网络爬虫的目标,这也是本文的主旨,输出有价值能够真正帮助到读者的知识,即授人以鱼不如授人以渔,让我们直 ...

  6. python爬虫爬取58网站数据_Python爬虫,爬取58租房数据 字体反爬

    Python爬虫,爬取58租房数据 这俩天项目主管给了个爬虫任务,要爬取58同城上福州区域的租房房源信息.因为58的前端页面做了base64字体加密所以爬取比较费力,前前后后花了俩天才搞完. 项目演示 ...

  7. python如何爬虫股票数据_python爬虫实例,股票数据定向爬虫

    前言 我服了,这几天,怎么涨两天还不够跌一次,害.希望这个可以帮到自己! "股票数据定向爬虫"实例介绍 功能描述 目标:获取上交所和深交所所有股票的名称和交易信息 输出:保存到文件 ...

  8. python爬虫爬取股票软件数据_Python爬虫抓取东方财富网股票数据并实现MySQL数据库存储(转载)...

    完整代码 实际上,整个事情完成了两个相对独立的过程:1.爬虫获取网页股票数据并保存到本地文件:2.将本地文件数据储存到MySQL数据库.并没有直接的考虑把从网页上抓取到的数据实时(或者通过一个临时文件 ...

  9. python爬取今日头条后台数据_Python爬虫实战入门五:获取JS动态内容—爬取今日头条...

    之前我们爬取的网页,多是HTML静态生成的内容,直接从HTML源码中就能找到看到的数据和内容,然而并不是所有的网页都是这样的. 有一些网站的内容由前端的JS动态生成,由于呈现在网页上的内容是由JS生成 ...

最新文章

  1. colMedians(x) : Argument ‘x’ must be a matrix、rowMedians(data) : Argument ‘x‘ must be a matrix.
  2. html5中 save方法,如何HTML5画布另存为窗口8 Metro应用中的图像文件?(How to save html5 c...
  3. ASP.NET 对类进行XML序列化和反序列化
  4. javascript二级省市select联动菜单
  5. 相亲交友小程序开发方案及源码
  6. 1、MyBatis下载地址以及简介
  7. 深度学习:YOLO算法与其优化
  8. Matlab实现Sandbox方法计算分形维数
  9. 杭州第二机场选址的三个备选方案仁和、瓶窑、塘栖中选择瓶窑的理由。元芳,你怎么看?
  10. DELL服务器bios文件编辑,BIOS维修网站www.biosrepair.com-DELL 1600SC服务器BIOS分离过程...
  11. 微信怎么收银行卡的消息服务器,微信零钱提现,这样操作,可以免去手续费
  12. 教你如何快速下载网站?如何仿制网址,下载网站,获取网站html文件,图像文件
  13. 微信如何开通直播?开通方法有2种
  14. oracle 汉字显示问号
  15. SWFObject 使用 范例版~~~
  16. 简单快速!分享给你一款在线jpg格式转换器
  17. 火狐浏览器打不开淘宝首页的解决办法
  18. 【JAVA】-- 期末考试复习题含答案(每章对应题、选择、填空、简答、编程)(上)
  19. 一体化枪机和快速球机
  20. IntelliJ IDEA / Eclipse 自动生成 Author 注释 签名

热门文章

  1. 手机隔空充电,会有辐射吗?
  2. 干货 | 深度剖析C语言的main函数
  3. html生成xml文件,字符串xml生成xml文件
  4. oneinstack_OneinStack lnmp网站环境部署Namecheap SSL安全证书方法
  5. android点击弹出日期选择器,关于Android 点击按钮弹出日期选择器
  6. 发送邮件_使用 Python 发送电子邮件
  7. hadoop知识整理(2)之MapReduce
  8. sqlserver 2014 删除主键约束
  9. shopping car 3.0
  10. 第二章 DateTime工具类