通信人家园

 找回密码
 注册

只需一步,快速开始

短信验证,便捷登录

搜索

军衔等级:

  新兵

注册:2024-4-19
跳转到指定楼层
1#
发表于 2026-8-13 23:49:03 |只看该作者 |倒序浏览
import requests
from bs4 import BeautifulSoup
import pandas as pd


def save_a_month_data(url):
    """
    保存一个月的天气历史数据,即一个页面中的数据
    :param url: 页面url 保存有某年某月的月数据所在的页面
    :return: 返回当月的二维天气数据列表
    """
    # 返回的当月的天气数据列表a_month
    a_month = []

    # 请求头
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"}
    # 请求url,响应r
    r = requests.get(url, headers=headers)
    soup = BeautifulSoup(r.text, 'html.parser')
    tianqi_zone = soup.find(class_='tian_three')
    try:
        tianqi_data = tianqi_zone.find(class_='thrui')
    except AttributeError:
        print(tianqi_zone)
        return a_month
    tianqi_data_a_month = tianqi_data.find_all('li')

    # 当月天气历史数据的处理
    for tianqi_data_a_day in tianqi_data_a_month:
        len_a_day_data = len(tianqi_data_a_day.text.split())
        if len_a_day_data == 7:
            a_day_data = tianqi_data_a_day.text.split()
            a_day_data.remove(a_day_data[1])
            a_month.append(a_day_data)
        else:
            a_month.append(tianqi_data_a_day.text.split())

    return a_month


# 所有的历史数据保存变量 all_data
all_data = []

# 遍历201101~202412之间的所有历史数据
for year in range(2011, 2025):
    for month in range(1, 13):
        if month < 10:
            url = f"http://lishi.tianqi.com/yantai/{year}0{month}.html"
            # print(url)
            a_month_data = save_a_month_data(url)
            all_data += a_month_data
        else:
            url = f"http://lishi.tianqi.com/yantai/{year}{month}.html"
            # print(url)
            a_month_data = save_a_month_data(url)
            all_data += a_month_data

df = pd.DataFrame(all_data)
# 保存所有的天气历史数据至本地excel文件中
df.to_excel('a.xlsx', index=False)

举报本楼

您需要登录后才可以回帖 登录 | 注册 |

版规|手机版|C114 ( 沪ICP备12002291号-1 )|联系我们 |网站地图  

GMT+8, 2026-9-24 06:59 , Processed in 0.109639 second(s), 16 queries , Gzip On.

Copyright © 1999-2025 C114 All Rights Reserved

Discuz Licensed

回顶部