博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python爬虫基础(三)---爬取天气&可视化展示
阅读量:4165 次
发布时间:2019-05-26

本文共 2849 字,大约阅读时间需要 9 分钟。

python爬虫基础(三)—爬取天气&可视化展示

前言

python 爬虫实例一:我们用前面讲到的request和bs4来爬取历史天气,并且将数据展示出来。

要爬取的网站:

url = 'http://tianqihoubao.com/lishi/beijing/month/202101.html'

在这里插入图片描述

一、爬取数据

import requestsfrom bs4 import BeautifulSoupurl = "http://tianqihoubao.com/lishi/beijing/month/202101.html"response = requests.get(url)response.encoding = "gbk"text = response.textprint(text)

解析网页之后,在里面看到我们想要的天气情况。

在这里插入图片描述我们用bs4来解析网页;

import requestsfrom bs4 import BeautifulSoupurl = 'http://tianqihoubao.com/lishi/beijing/month/202101.html'response = requests.get(url)response.encoding = "gbk"text = response.textsoup = BeautifulSoup(text,'lxml')#忘记find_all方法的可以看上一篇python爬虫基础(二)tr_list = soup.find_all('tr')#展示出来的内容我们通过字符串截取想要的内容,去掉多余空格for data in tr_list[1:]:    sub_data = data.text.split()   #通过text获取当前标签内容    print(sub_data)

打印出的数据,以列表的形式展示。

在这里插入图片描述
我们将爬虫的程序封装成函数,这样我们就可以爬取多个月份的天气数据了。

import requestsfrom bs4 import BeautifulSoupimport pandas as pddef get_wea(url):    response = requests.get(url)    response.encoding = "gbk"    text = response.text    soup = BeautifulSoup(text,'lxml')    tr_list = soup.find_all('tr')    #定义三个列表,取出爬到的日期,天气状况,气温    date,con,temp  = [],[],[]    for data in tr_list[1:]:        sub_data = data.text.split()   #通过text获取当前标签内容        date.append(sub_data[0])        con.append(''.join(sub_data[1:3]))        temp.append(''.join(sub_data[3:6]))    data = pd.DataFrame()#二维数据类型,表格    data['日期'] = date    data['天气'] = con    data['温度'] = temp        return data        month_1 = get_wea('http://tianqihoubao.com/lishi/beijing/month/202101.html')month_2 = get_wea('http://tianqihoubao.com/lishi/beijing/month/202102.html')month_3 = get_wea('http://tianqihoubao.com/lishi/beijing/month/202103.html')data = pd.concat([month_1,month_2,month_3]).reset_index(drop=True)#将表格拼接data.to_csv('beijing.csv',index = False,encoding='utf-8')print('successful')

在代码保存的地方生成一个beijing.csv文件,用Excel打开,展示数据。

在这里插入图片描述
在这里插入图片描述
当然也可以用代码打开文件展示出来;全部数据是90行乘以3列。

import pandas as pddata = pd.read_csv(r'beijing.csv')data

在这里插入图片描述

二、数据可视化

1.读取数据

#数据可视化import pandas as pdimport matplotlib.pyplot  as pltdata = pd.read_csv(r'beijing.csv')

因为最高气温、最低气温在一个列数据中,并且是字符串,所以我们要先把他们分开,并且装换成整数型数据。

#将气温数据分开data['最高气温'] = data['温度'].str.split('/',expand=True)[0]data['最低气温'] = data['温度'].str.split('/',expand=True)[1]#将数据装换成整数型data['最高气温'] = data['最高气温'].map(lambda x:int(x.replace('℃','')))data['最低气温'] = data['最低气温'].map(lambda x:int(x.replace('℃','')))

在这里插入图片描述

2.绘图展示

#根据数据绘制图形figure = plt.figure(figsize=(15,8))plt.plot(date,high,c='orange',alpha=0.5)plt.plot(date,low,c='blue',alpha=0.5)#给图表区域着色#fill_between(x,y,facecolor,alpha)  alpha指定的是透明度(0表示完全透明,1表示不透明)plt.fill_between(date,high,low,facecolor='purple',alpha=0.1)plt.show()

在这里插入图片描述

总结

爬虫就是为了获取数据,获取数据当然是为了分析数据,得到数据背后的规律、信息。本次只是简单地展示历史气温的一个变化趋势。pyecharts和matplotlib库都可以用来做图表数据分析,后期会继续更新相应的文档。

博客只是简单的展示一些东西,如果有机会,后面会推出详细的视频讲解,实现更专业的数据挖掘和数据分析的知识。
如果你觉得我的内容对你的学习有帮助,请点击关注后续更新内容,又问题也可以私信,一起讨论。

转载地址:http://zqoxi.baihongyu.com/

你可能感兴趣的文章
LINUX共享内存使用常见陷阱与分析
查看>>
Linux编程gcc编译器禁止所有警告和显示所有警告
查看>>
共享内存理解:shmget()函数、shmat()、IPC_CREAT | IPC_EXCL
查看>>
ctime函数--把日期和时间转换为字符串(打印时间时常用-LINUX系统)
查看>>
查看linux内核命令 ls /etc/rc.d -l
查看>>
Linux下的函数执行时间的统计方法(测试某个函数的执行时间)
查看>>
Linux时间函数之gettimeofday()、settimeofday()函数之使用方法(以及判断函数执行时间差)
查看>>
Linux命令之hwclock - 查询和设置硬件时钟
查看>>
linux查看设备网卡MAC和IP地址以及设置MAC ip的注意事项
查看>>
linux下删除文件或文件夹的命令
查看>>
双重指针自己使用心得
查看>>
如何解决消息队列传递数据出现stack smashing detected的问题
查看>>
Linux里设置环境变量的方法(export PATH)
查看>>
c语言中strlen所输出的字符长度到底要不要再加1 (指'\0')?
查看>>
C语言双指针的常见用法
查看>>
UBUntu解决fatal error: sqlite3.h: No such file or directory,//原因是系统没有安装函数库
查看>>
String 类 的c_str()函数
查看>>
sysconf()系统函数详解
查看>>
调整内核printk的打印级别(启动脚本中运行 echo 0 4 0 7 > /proc/sys/kernel/printk 关闭所有内核打印)
查看>>
临时关闭打开console办法
查看>>