就在前几天还是二十多度的舒适温度,今天一下子就变成了个位数,小编已经感受到冬天寒风的无情了。之前对获取天气都是数据上的搜集,做成了一个数据表后,对温度变化的感知并不直观。那么,我们能不能用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. 2021年大数据Flink(十七):Flink四大基石
  2. SimpleDateFormat 出现错误 Call requires API level 24 (current min is 15)
  3. 新闻视频 36:整合首页 用到 Repeater 主要用gridview /gridview去掉边框用到 BorderWidth=”0” inner join和 left...
  4. Silverlight WCF 上传实现
  5. 注解能力ApplicationContext作为 IoC 容器示例
  6. 797. 所有可能的路径
  7. Vue介绍-Vue简单应用-Vue基本用法
  8. iconfont 图标转为字体_App 中使用 Iconfont 的整套方案
  9. Android MVP框架实现过程
  10. CodeFores 665D Simple Subset(贪心)
  11. SpringBoot 笔记
  12. 顺序堆栈实现数制转换以十进制数转化为八进制数为例
  13. matlab如何实现隔直滤波器,matlab的滤波器仿真——低通滤波器与插值滤波器
  14. mac 下 jkl 按键失灵
  15. 38岁超任模拟器设计者自杀!死前留下真名与神秘自拍照,最后一刻开源higan
  16. 2011的总结(感谢自己,感恩他人)【转自我的新浪博客】
  17. win10 开机无法自动连接或重启才能连接WIFI的简单解决方法/2022.03
  18. Steam平台——全球最大的游戏平台,现在给大家介绍下steam搬砖项目,这个项目既小众又稳定。
  19. 计算机无法开机如何读u盘启动,电脑无法识别U盘启动盘怎么办?
  20. Go语言Gin框架源码分析

热门文章

  1. 做项目,如何选单片机?
  2. 会自学的四足机器人,3.5个小时学会走路!
  3. php一句话过狗,整理的最新WebSHell (php過狗一句話,過狗菜刀,2016過狗一句話,2016php免殺一句話)...
  4. python中的doc_在windows 10上读取python中的.doc文件
  5. linux检测不到win,c# – 如何正确检测Windows,Linux和Mac操作系统
  6. 电脑销售渠道_双十一遇上英雄联盟S10,苏宁游戏装备销售增长258%
  7. java 打开sql数据库_idea 使用Java连接SQL Server数据库教程
  8. 怎么统计是否内宿_第二关:描述统计分析
  9. POJ 2240 Arbitrage(判正环)
  10. 深入解析thinkphp中的addAll方法