0


【Python】实现爬虫(完整版),爬取天气数据并进行可视化分析

✌️✌️✌️大家好呀,你们的作业侠又轰轰轰的出现了,这次给大家带来的是python爬虫,实现的是爬取某城市的天气信息并使用matplotlib进行图形化分析✌️✌️✌️
要源码可私聊我。

大家的关注就是我作业侠源源不断的动力,大家喜欢的话,期待三连呀😊😊😊

往期源码回顾:

【Java】实现绘图板(完整版)
【C++】图书管理系统(完整板)
【Java】实现计算器(完整版)

有需要的小伙伴自取哦!

进入今天的正题:

请添加图片描述

1.实现需求:
从网上(随便一个网址,我爬的网址会在评论区告诉大家,dddd)获取某一年的历史天气信息,包括每天最高气温、最低气温、天气状况、风向等,完成以下功能: (1)将获取的数据信息存储到csv格式的文件中,文件命名为”城市名称.csv”,其中每行数据格式为“日期,最高温,最低温,天气,风向”; (2)在数据中增加“平均温度”一列,其中:平均温度=(最高温+最低温)/2,在同一张图中绘制两个城市一年平均气温走势折线图; (3)统计两个城市各类天气的天数,并绘制条形图进行对比,假设适合旅游的城市指数由多云天气占比0.3,晴天占比0.4,阴天数占比0.3,试比较两个城市中哪个城市更适合旅游; (4)统计这两个城市每个月的平均气温,绘制折线图,并通过折线图分析该城市的哪个月最适合旅游; (5)统计出这两个城市一年中,平均气温在18~25度,风力小于5级的天数,并假设该类天气数越多,城市就越适宜居住,判断哪个城市更适合居住;
爬虫代码:

import random
import time

from spider.data_storage import DataStorage
from spider.html_downloader import HtmlDownloader
from spider.html_parser import HtmlParser

classSpiderMain:def__init__(self):
        self.html_downloader=HtmlDownloader()
        self.html_parser=HtmlParser()
        self.data_storage=DataStorage()defstart(self):"""
        爬虫启动方法
        将获取的url使用下载器进行下载
        将html进行解析
        数据存取

        :return:
        """for i inrange(1,13):# 采用循环的方式进行依次爬取
            time.sleep(random.randint(0,10))# 随机睡眠0到40s防止ip被封
            url="XXXX"if i<10:
               url =url+"20210"+str(i)+".html"# 拼接urlelse:
                url=url+"2021"+str(i)+".html"
            html=self.html_downloader.download(url)
            resultWeather=self.html_parser.parser(html)if i==1:
             t =["日期","最高气温","最低气温","天气","风向"]
             resultWeather.insert(0,t)
            self.data_storage.storage(resultWeather)if __name__=="__main__":
    main=SpiderMain()
    main.start()
import requests as requests

classHtmlDownloader:defdownload(self,url):"""
        根据给定的url下载网页
        :param url:
        :return: 下载好的文本
        """

        headers ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0"}

        result = requests.get(url,headers=headers)return result.content.decode('utf-8')

此处大家需要注意,将User-Agent换成自己浏览器访问该网址的,具体如何查看呢,其实很简单,只需大家进入网站后,右键网页,然后点击检查将出现这样的界面:
在这里插入图片描述然后只需再点击网络,再随便点击一个请求,如下图:
在这里插入图片描述就可以进入如下图,然后再复制,图中User-Agent的内容就好了!

在这里插入图片描述
继续:

from bs4 importBeautifulSoupclassHtmlParser:

    def parser(self,html):"""
        解析给定的html
        :param html::return: area set
        """

        weather =[]
        bs =BeautifulSoup(html,"html.parser")
        body = bs.body  # 获取html中的body部分
        div = body.find('div',{'class:','tian_three'})  # 获取class为tian_three的<div></div>
        ul = div.find('ul')  # 获取div中的<ul></ul>
        li = ul.find_all('li')  # 获取ul中的所有<li></li>for l in li:
            tempWeather =[]
            div1 = l.find_all("div")  # 获取当前li中的所有div
            for i in div1:
                tempStr = i.string.replace("℃","")  # 将℃进行替换
                tempStr = tempStr.replace(" ","")  # 替换空格
                tempWeather.append(tempStr)
            weather.append(tempWeather)return weather
importpandas as pd

classDataStorage:
    def storage(self,weather):"""
        数据存储
        :param weather list
        :return:"""
        data = pd.DataFrame(columns=weather[0], data=weather[1:])  # 格式化数据
        data.to_csv("C:\\Users\\86183\\Desktop\\成都.csv", index=False, sep=",",mode="a")  # 保存到csv文件当中

注意,文件保存路径该成你们自己的哦!
ok,爬取代码就到这,接下来是图形化效果大致如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码如下:

2023/11/14后:需要可私聊博主(不开源)

好的这次就到这儿吧,我们下次见哦!!!


本文转载自: https://blog.csdn.net/chandfy/article/details/125153243
版权归原作者 工藤学编程 所有, 如有侵权,请联系我们删除。

“【Python】实现爬虫(完整版),爬取天气数据并进行可视化分析”的评论:

还没有评论