教你用Python爬虫轻松抓取全国天气数据(附可视化技巧)

一、为什么需要天气数据?(不只是为了看天气预报!)

最近在帮朋友做农业数据分析项目时(没想到吧!),意外发现获取历史天气数据竟然这么麻烦!市面上的天气API要么收费,要么限制调用次数(钱包君瑟瑟发抖)。这时候Python爬虫简直就是救命稻草!(敲黑板:合法合规前提下使用哦)

二、准备工作(超级简单!)

1. 安装必要库(已经有的可以跳过)

pip install requests beautifulsoup4 pandas

2. 目标网站分析(以中国天气网为例)

打开浏览器开发者工具(F12),重点观察:

  • 城市选择器的HTML结构(class=“citybox”)
  • 温度数据的存放位置(class=“tem”)
  • 日期标签的特征(class=“date”)

三、实战代码手把手教学(跟着敲就对了!)

步骤1:基础爬取框架

import requests
from bs4 import BeautifulSoup

url = 'http://www.weather.com.cn/weather/101020100.shtml'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}

response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content.decode('utf-8'), 'html.parser')

步骤2:精准提取数据(核心代码!)

weather_list = []
for item in soup.select('.t.clearfix > li'):
    date = item.select_one('.date').get_text()
    weather = item.select_one('.wea').get_text()
    temp = item.select_one('.tem').get_text().replace('\n', '')
    wind = item.select_one('.win > em > span')['title']
    
    weather_list.append({
        '日期': date,
        '天气状况': weather,
        '温度': temp,
        '风向': wind
    })

步骤3:数据存储(两种方式任选)

# CSV存储(推荐!)
import pandas as pd
df = pd.DataFrame(weather_list)
df.to_csv('shanghai_weather.csv', index=False)

# Excel存储(需要安装openpyxl)
# pip install openpyxl
df.to_excel('weather_data.xlsx', engine='openpyxl')

四、让数据会说话(可视化技巧)

1. 温度变化折线图

import matplotlib.pyplot as plt

plt.figure(figsize=(12,6))
plt.plot(df['日期'], df['温度'].str.extract('(\d+)').astype(int), marker='o')
plt.title('上海近7日温度变化趋势')
plt.xlabel('日期')
plt.ylabel('温度(℃)')
plt.grid(True)
plt.show()

2. 天气状况统计(柱状图)

weather_counts = df['天气状况'].value_counts()

plt.bar(weather_counts.index, weather_counts.values)
plt.xticks(rotation=45)
plt.title('天气类型分布')
plt.ylabel('出现天数')
plt.tight_layout()

五、避坑指南(血泪经验!)

  1. 反爬虫机制:有些网站会检测User-Agent,记得随机更换(可以用fake_useragent库)
  2. IP限制:频繁访问会被封IP,建议:
    • 设置请求间隔(time.sleep(2))
    • 使用代理IP池(进阶玩法)
  3. 数据清洗:注意处理缺失值和异常符号(比如温度里的"℃"符号)
  4. 法律红线:务必遵守网站的robots.txt协议!

六、还能玩出什么花样?(扩展思路)

  • 搭建定时爬虫任务(用APScheduler库)
  • 开发天气预警通知系统(结合邮件/SMS API)
  • 历史天气大数据分析(用Pandas做时间序列分析)
  • 结合GIS地图展示(pyecharts超酷炫!)

七、说在最后(超级重要!!!)

最近帮某奶茶店分析客流量与天气关系时(想不到吧!),发现下雨天订单量增加23%(配送费立功了)。所以天气数据真的超有用!但切记:爬虫虽好,不要贪杯哦~(合法合规永远是第一位的!)

小贴士:本文案例仅用于学习交流,实际使用请遵守相关网站规定。如果网站改版导致代码失效,记得自己调试CSS选择器哦~(别打我,这就是爬虫的日常!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值