如何使用Python爬取历史天气信息

在这里插入图片描述
事情起因,是今天我们老师布置了一份作业 叫我们去爬取呼和浩特的天气情况 ,首先对于老师的描述 ,我自我把信息过滤了一下 我这边只爬取到了9.30号的日期 因为 对于后面的控制 会增大我代码的的复杂度 不如我手动添加了
首先,介绍一下自己 菜鸡 双非 研究生一枚 ,所以对于代码的排版 以及 美化及优化问题请各位大佬多多担待一下 好了 闲话不多说 进入正题部分
首先,因为每个天气的网站显示的日期格式不同 ,所以我经过百度大法 我发现了
在这里插入图片描述
这个网站(需要点这里)的显示的比较好 对于里面的信息封装 也比较容易我们获取 ,当然你也可以选别的网站 进行信息的爬取。只要找到
具体信息的位置就可以
进入 网站 右击 检查 可以看到 前端的页面 如下图
在这里插入图片描述
好了 网站 前端 介绍到这里 下来 我们进入代码部分
先介绍 一下我们用的库, 这里 因为我也是第一次上手 选择了上手最简单的BeautifulSoup
虽然,相比于re 它速度很慢,但是由于我们获取的数据集不大,速度差距也没有多大差距

import pandas as pd
import requests
from bs4 import BeautifulSoup

http://tianqihoubao.com/lishi/huhehaote/month/202201.html http://tianqihoubao.com/lishi/huhehaote/month/202202.html
观察一下 1月和2月的链接 我们发现只有 后面数字有差距
下来我们书写一份 比较通用的代码 去获取 每个月 以及每年的url

def set_link(year):
    #year参数为需要爬取数据的年份
    link = []
    for i in range(1,10):#这里因为今天是2022/10/3  故我们只获得 1-9月的url 其他的这里改为13即可
        #一年有12个月份
        if i < 10:
            url='http://tianqihoubao.com/lishi/huhehaote/month/{}0{}.html'.format(year,i)
        else:
            url='http://tianqihoubao.com/lishi/huhehaote/month/{}{}.html'.format(year,i)
        link.append(url)
    return link

拿到了每个月份的超链接 后 现在 我们通过 美丽汤 去获取 tr 标签

def get_data():
    link = set_link(2022)
    for url in link:
        response = requests.get(url)
        html = response.content.decode('gbk')
        soup = BeautifulSoup(html,'html.parser')
        tr_list = soup.find_all("tr")

        for data in tr_list[1:]:
            sub_data = data.text.split()
            print(sub_data)
            dates.append(sub_data[0])
            # print(dates)
            conditions.append(''.join(sub_data[1:3]))
            # print(conditions)#检查 自己切片是否正确
            maxtemp.append(sub_data[3])
            mintemp.append(sub_data[5])

经过上述部分 我们 可以得到以下结果
在这里插入图片描述
现在 ,我们 就应该 把拿到的数据 转成csv 即可
datas = pd.DataFrame({‘日期’:dates,‘天气状况’:conditions,‘最高温度’:maxtemp,‘最低温度’:mintemp})
datas.to_csv(‘天气数据.csv’,encoding=‘gbk’)
至此 大功告成
但是 还是未完成老师任务 获取 平均气温 (网上上没有显现,得自己计算,awsl 它是str 没办法转int
头大了 ,今天觉得到这里算了 ,后面我再说怎么转一下类型 去计算 avg_temp 如果有大佬看到这篇水文 劳烦教教小弟)

最终效果展示:
在这里插入图片描述

希望 能帮助到你们
谢谢
如果喜欢请留下你的 关注 留言

入门小道士去炼丹了 有问题请私信

  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值