Python爬虫山东重庆各地区天气预报

news/2024/7/23 9:43:20 标签: pip, 爬虫, 算法

天气数据获取工具

简单的Python脚本用于从中国天气网(http://www.weather.com.cn/textFC/chongqing.shtml)获取天气数据,并将数据保存到Excel文件中。

功能
输入中文省份名称,获取该省份下所有城市的天气数据。    
数据保存到指定文件夹中,文件名格式为:时间_省份_城市.xlsx。  

使用方法


安装必要的库

pip install -r requirements.txt

requirements.txt: 

lxml
pypinyin
pandas
tkinter
openpyxl

运行脚本

输入中文省份名称,脚本会自动获取天气数据并保存到天气数据文件夹。

运行程序

双击weather.exe运行程序,输入中文省份名称,会自动获取天气数据并保存为excel文件。

配置

默认输出文件夹:天气数据  
默认输出文件名:当天日期-当前时间-省份.xlsx

依赖
```
pandas
openpyxl
pypinyin
```
注意事项
请确保网络连接正常,否则无法从中国天气网获取数据。  
确保已经安装所需的依赖。

完整代码

import os
import pandas as pd
from datetime import datetime
from pypinyin import pinyin, Style

# 获取指定省份的天气数据,并保存到指定文件夹中
def get_weather_data(province_name, output_folder='天气数据', output_filename='output.xlsx'):
    # 将中文省份名称转换为拼音
    pinyin_name = ''.join([''.join(item) for item in pinyin(province_name, style=Style.NORMAL)])

    # 构造天气数据的URL
    url = f"http://www.weather.com.cn/textFC/{pinyin_name}.shtml"

    try:
        # 使用pandas的read_html函数读取网页中的表格数据
        tables = pd.read_html(url)
    except Exception as e:
        print(f"Error: {e}")
        return None

    if not tables:
        print(f"No valid tables to process for {province_name}.")
        return None

    # 合并所有表格的数据
    all_data = pd.concat([table.iloc[:, :-1] for table in tables])

    # 确保输出文件夹存在
    os.makedirs(output_folder, exist_ok=True)

    # 生成带有路径的输出文件名
    output_filename = generate_output_filename(output_folder, pinyin_name, output_filename)

    # 将数据保存到Excel文件中
    all_data.to_excel(output_filename, index=False)
    return output_filename

# 生成带有时间戳和省份拼音的输出文件名
def generate_output_filename(output_folder, pinyin_name, base_filename):
    timestamp = datetime.now().strftime("%Y%m%d_%H%M%S")
    return os.path.join(output_folder, f"{timestamp}_{pinyin_name}_{base_filename}")

if __name__ == "__main__":
    # 从终端输入省份名称
    province_name = input("请输入省份名称(中文): ")
    output_folder = '天气数据'
    # 获取天气数据并保存到文件中
    output_filename = get_weather_data(province_name, output_folder=output_folder)
    if output_filename:
        print(f"Data saved to {output_filename}")


http://www.niftyadmin.cn/n/5277393.html

相关文章

助力产教合一:赛氪出席中国研究生数学建模竞赛二十周年庆典

助力产教合一,共建创新平台:赛氪出席中国研究生数学建模竞赛二十周年庆典 12月16日,第二十届中国研究生数学建模竞赛颁奖典礼暨二十周年庆祝大会顺利召开。2003年,由东南大学发起并主办“南京及周边地区高校研究生数学建模竞赛”…

R语言【base】——match.arg通过部分匹配校正参数输入,参数的输入值从首字母开始,保持连续,宁缺勿错

Package base version 4.3.2 match.arg通过部分匹配校正参数输入 match.arg(arg, choices, several.ok FALSE) match.arg 的功能是:将参数【arg】的传入值与参数【choices】的传入值进行匹配,参数choices的传入值可以视为一个候选值列表。 match.arg的…

el-table设置默认选中报错_this.$refs.singleTable.toggleAllSelection is not a function

直接使用以下的方法,报错信息是_this.$refs.singleTable.toggleAllSelection is not a function this.$refs.singleTable.toggleAllSelection()看了网上的解决方法,加了this.$nextTick,代码如下,但还是报错Error in nextTick: "TypeErr…

【小沐学Unity3d】3ds Max 减面工具汇总

文章目录 1、简介2、“优化”修改器3、“专业优化”修改器4、“多分辨率”修改器5、Polygon Cruncher5.1 工具简介5.2 下载安装5.3 使用测试 6、Simplyon6.1 工具简介6.2 下载安装6.3 使用测试 7、FAQ7.1 在3dmax里面显示点数和面数 结语 1、简介 有几个 3ds Max 修改器可帮助您…

【Jenkins】远程API接口介绍

Jenkins 为其功能提供了远程访问 API。目前它支持: REST API 风格,包含xml和json格式Python 包装接口Java 包装接口Ruby 包装接口 远程访问 API 以 REST 样式提供。也就是说,没有所有功能的单一入口点,而是在“.../api/” URL 下…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Text文本组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之文本组件 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、文本组件 Text 是显示文本的基础组件之一,它可以包含子组件 Span &…

【递归 回溯】LeetCode-17. 电话号码的字母组合

17. 电话号码的字母组合。 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digit…

JVS低代码和智能BI(自助式数据分析)12.19更新功能说明

低代码更新功能 新增: 1、表单组件:标题、分割线、按钮等非数据组件增加小程序端隐藏设置; 隐藏设置允许开发者对表单组件中的非数据组件进行隐藏,例如,可能只想展示表单的部分内容,或者希望在特定条件下显示或隐藏…