Python爬虫获取杭州24小时温度数据及可视化展示
本文介绍使用Python爬虫技术抓取杭州今日24小时温度数据的方法。通过requests库发起请求,利用正则表达式解析HTML页面中的温度数值,并结合面向对象编程封装逻辑。最后使用Matplotlib库将提取的小时温度数据绘制为散点图或折线图,直观展示温度变化趋势。
Python爬虫获取杭州24小时温度数据及可视化展示
本文详细介绍利用Python爬虫技术获取杭州24小时温度数据并进行可视化展示的操作流程。该示例旨在为读者提供完整的代码实现与解析思路,供学习参考。
数据来源与展示目标
本示例主要展示散点图绘制效果,数据来源为杭州今日24小时温度,目标网页地址为 https://www.baidutianqi.com/today/58457.htm。
- 核心步骤之一是利用正则表达式从网页源码中精确提取温度数值。
- 代码结构采用面向对象编程方式,便于封装请求与解析逻辑。
- 数据获取后,通过图表进行展示,支持散点图或折线图两种形式。
环境依赖与库导入
首先导入程序运行所需的第三方库,包括网络请求、正则处理及绘图工具。
核心库导入代码
import requests
import re
from matplotlib import pyplot as plt
from matplotlib import font_manager
import matplotlib
面向对象封装与逻辑实现
接下来定义Weather类,封装初始化、请求发送、数据解析及图表展示的具体方法。
Weather类完整代码
class Weather(object):
def __init__(self):
self.url = 'https://www.baidutianqi.com/today/58457.htm'
self.headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36'}
#请求
def __to_requests(self):
response = requests.get(url=self.url,headers=self.headers)
return self.__to_paeser(response.content.decode('utf-8'))
#解析
def __to_paeser(self,html):
#正则表达式 要从数据循环的部分写起 如果从循环的父标签开始 , 则只会匹配到一个值 即父标签下的某个标签 , 而不是循环下的
pattern = re.compile('<li>.*?<font class="red">(.*?)</font>.*?<font class="blue">(.*?)</font></li>',re.S)
return re.findall(pattern,html)
#展示
def __to_show(self,data):
x = []
y = []
for value in data:
x.append(value[0])
y.append(int(value[1][-2:]))
#画布
plt.figure(figsize=(15,8),dpi=80)
#中文 /System/Library/Fonts/PingFang.ttc C:\Windows\Fonts\simsun.ttc
my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=18)
#x y 轴刻度 标签 区分 y的刻度值/刻度标签 和 y本身的值
plt.xticks(fontproperties=my_font,rotation=60)
y_ticks = ["{}℃".format(i) for i in range(min(y),max(y)+1)]
plt.yticks(range(min(y),max(y)+1),y_ticks,fontproperties=my_font,rotation=60)
# x y 轴说明
plt.xlabel('时间',color='orange',rotation=60,fontproperties=my_font)
plt.ylabel('温度',color='orange',rotation=60,fontproperties=my_font)
#网格
plt.grid(alpha=0.4)
#标题
plt.title('当天时刻温度低值变化',fontproperties=my_font)
#图例
plt.legend(prop=my_font)
#作画
# plt.scatter(x,y,label='2019-08-22')
plt.plot(x,y,color='red')
plt.show()
#操作
def to_run(self):
result = self.__to_requests()
self.__to_show(result)
程序调用与执行
最后在主程序中实例化Weather类并调用运行方法,完成数据抓取与图表生成。
主程序调用代码
if __name__ == '__main__':
wt = Weather()
wt.to_run()


相关资源推荐
如需进一步了解Python相关技术,可参考本站其他专题,包括《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》以及《Python文件与目录操作技巧汇总》。
结语
希望本文提供的代码示例和解析过程能对各位Python程序开发者的学习与实践有所帮助。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













