1153天数据告诉你黄山云海在哪些天容易遇见

本文通过分析1153天的黄山风景区气象信息,验证了百度百科关于黄山云海每年仅51天可见的记录,并发现云海高概率出现集中在11月至次年5月,尤其是11-12月、1-2月、6月。作者通过Python爬虫获取并清洗数据,揭示了观赏云海的黄金时段,建议游客错峰出行以增加遇见云海的机会。
摘要由CSDN通过智能技术生成

1153天数据告诉你黄山云海在哪些天容易遇见

数据来源:黄山风景区管理委员会官网 > 气象信息

原创:Ing_ideas


云海是黄山的第一奇观。huangshan-gb3d37fee4_1920

据百度百科记载,黄山一年只有51天可以看到云海,每年11月到第二年的5月是观赏环山云海的最佳时间段。抱着数据党的态度,想用真实的数据证明以上结论是否可信。


流程:

1.数据获取:黄山官网的气象预告从2018年起至今提供了条天气预报数据,包括我们所需的基本天气情况以及云海概率。

导航:黄山风景区管理委员会官网-气象信息 image-20221125161823569

image-20221125161943480

2.对获得文本数据进行提取,这里我们采用的Python中正则的方法来提取。

3.进行数据透视和绘图分析。

一、数据获取

1.request请求

根据网页结构构造url请求,一共75页。

url = 'https://hsgwh.huangshan.gov.cn/content/column/6794224?pageIndex={}'.format(i)

2.lxml结合xpath解析网页源代码

#定义字典储存数据
item = {}
#解析源代码 
content_lst = selector.xpath("//div/div[3]/div[3]//ul//a//span/text()")
#解析日期
date_lst = selector.xpath('//li//span[@class="right date"]/text()')

3正则提取文本

首先要解决正则如何匹配中文字的问题:

1.”[\u4e00-\u9fa5]+”可以表示一个或者多个中文字符;

2.利用编码函数将特定字符转换为unicode编码。

def get_unicode(str):
    str_unicode = str.encode('unicode-escape').decode()
    return print(str_unicode)
M_unicode = get_unicode('月')
D_unicode = get_unicode('日')

#以下是输出,填入匹配规则就行
#\u6708
#\u65e5

# 循环解析
for num,n in enumerate(content_lst):    
  pattern_num = re.compile(r'-?\d{1,2}') # 匹配1-2位数字 -?此符号最多可以有一次
    pattern_per = re.compile(r'-?\d{1,2}%') # 匹配1-3位概率
    pattern_tex = re.compile(r'[\u4e00-\u9fa5]') # 匹配所有汉字

    pattern_TEM = re.compile(r'\u6c14\u6e29-?\d{1,2}[\u4e00-\u9fa5]-?\d{1,2}')
    pattern_SR = re.compile(r'\d{1}\u65f6\d{1,3}\u5206') # 日出时间文本
    
    # 最低和最高温度
    tems = pattern_TEM.findall(n)
    for tem in tems:
        tem_min = pattern_num.findall(tem)[0]
        tem_max = pattern_num.findall(tem)[1]
        item['tem_min'] = tem_min
        item['tem_max'] = tem_max       
#云海概率2018有和2022用的不同表述,需要多个条件和手动判断
if len(percent) == 2:
    sunrise_time_per = percent[0]
    item['sunrise_time_per'] = sunrise_time_per
    # 云海可见概率
    sea_of_clouds_per = percent[1]
    item['sea_of_clouds_per'] = sea_of_clouds_per

elif len(percent) == 1:
    sunrise_time_per = percent[0]
    item['sunrise_time_per'] = sunrise_time_per
    if len(per_kejianyunhai) == 1 :
        item['sea_of_clouds_per'] = '80%'
    elif len(per_oujianyunhai) == 1:
        item['sea_of_clouds_per'] = '30%'
    else:
        print(n+url+'网页需核实1')

else:
    print(n+url+'网页需核实0')
    item['sunrise_time_per'] = item['sea_of_clouds_per'] = '0'

# 储存        pd.DataFrame([item]).to_csv('./weather.csv',mode='a',index=False,header=0) 

二、数据清洗

将数据去重、将日期转为datetime对象等

df.drop_duplicates(inplace=True,ignore_index=True)
read_csv(parse_dates=['datetime']) # parse_dates将某些列解析为 DataTime 对象,这比使用 to_datetime() 方便

2.读入数据

代码如下(示例):

data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


三、数据分析

究竟哪些天容易见到云海(请横屏观看):

每年最可能见到黄山云海的76天

三年平均下来,共有76天云海可见概率大于等于60%,占全年20%,所以碰上黄山云海还是需要靠运气的。我们可以看到五一和十一黄金周云海概率不到60%,同时人流又多还会堵在上下山途中动不了,建议错峰出游。

他们集中在每年11-12月、1-2月、6月,其中冬季能见到雾凇与云海两大奇观,黄山的淡季门票还打折,时间是2021年12月20日至2022年1月20日,查好天气错峰看雪景也是很不错的。

image-20221125182759721

最后

感谢阅读,如果觉得文章有用,希望点赞和关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Renhai实验室

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值