天气数据获取工具
简单的Python脚本用于从中国天气网(http://www.weather.com.cn/textFC/chongqing.shtml)获取天气数据,并将数据保存到Excel文件中。
运行效果
功能
输入中文省份名称,获取该省份下所有城市的天气数据。
数据保存到指定文件夹中,文件名格式为:时间_省份_城市.xlsx。
使用方法
安装必要的库
bash
pip install -r requirements.txt
requirements.txt:
lxml
pypinyin
pandas
tkinter
openpyxl
提示确什么库的话,pip install 即可
如:ModuleNotFoundError: No module named 'pypinyin' 只需要在终端执行' pip install pypinyin'
运行脚本
输入中文省份名称,脚本会自动获取天气数据并保存到天气数据文件夹。
运行程序
双击weather.exe运行程序,输入中文省份名称,会自动获取天气数据并保存为excel文件。
配置
默认输出文件夹:天气数据
默认输出文件名:当天日期-当前时间-省份.xlsx
依赖
```
pandas
openpyxl
pypinyin
```
注意事项
请确保网络连接正常,否则无法从中国天气网获取数据。
确保已经安装所需的依赖。
完整代码
python
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}")