零基础也能搞定!Python爬虫抓取全国天气数据的保姆级教程

一、先来唠唠嗑(为什么要学这个?)

兄弟们!最近我发现好多刚入门Python的小伙伴都在问:“学爬虫到底有什么用啊?”(灵魂发问)今天就拿天气数据抓取这个典型案例,带你们感受爬虫技术的魅力!想象一下:自动获取全国365天的温度变化,还能生成酷炫的可视化图表,这不比手动查天气预报香多了?

二、战前准备(工具备齐才能开干)

2.1 必备三件套

  • requests库:网络请求界的扛把子 pip install requests
  • BeautifulSoup4:HTML解析神器 pip install beautifulsoup4
  • pandas库:数据处理专家 pip install pandas

2.2 选个靠谱的网站

这里以中国天气网为例(注意:抓取前请查看网站robots.txt文件),咱们的目标是抓取指定城市的实时天气数据。悄悄说:其实很多政府类网站的数据都是公开可用的哦~

三、手把手实战环节(代码逐行解析)

3.1 解剖网页结构(开发者工具YYDS)

按F12打开开发者工具,在元素面板里翻找(就像在衣柜里找袜子),你会发现天气数据都藏在<div class="today">这个容器里,温度数据在<span class="tem">标签中。

3.2 上代码!(建议跟着敲一遍)

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 伪装成浏览器访问(重要!防反爬)
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...'
}

def get_weather(city_code):
    url = f'http://www.weather.com.cn/weather/{city_code}.shtml'
    response = requests.get(url, headers=headers)
    response.encoding = 'utf-8'  # 解决中文乱码
    
    soup = BeautifulSoup(response.text, 'html.parser')
    weather_list = []
    
    # 定位到天气数据所在的div
    for item in soup.select('.t > ul li'):
        date = item.select('h1')[0].text
        weather = item.select('.wea')[0].text
        temp = item.select('.tem')[0].text.strip()
        weather_list.append([date, weather, temp])
    
    return pd.DataFrame(weather_list, columns=['日期', '天气', '温度'])

# 示例:北京的城市代码是101010100
df = get_weather('101010100')
df.to_csv('北京天气.csv', index=False)
print('数据已保存!快去看文件吧~')

3.3 避坑指南(血泪经验)

  • 遇到403错误?赶紧检查User-Agent是不是最新的
  • 数据抓取不全?可能是网站改版了,得重新分析HTML结构
  • 推荐加个time.sleep(3),做人不要太贪婪(防止被封IP)

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

4.1 温度折线图

import matplotlib.pyplot as plt

# 处理温度数据(去掉℃符号)
df['最高温'] = df['温度'].str.split('/').str[0].str.replace('℃','').astype(int)
plt.plot(df['日期'], df['最高温'], marker='o')
plt.title('北京近期温度变化')
plt.xticks(rotation=45)
plt.show()

4.2 高级玩法:用pyecharts做动态图表

from pyecharts.charts import Line

line = Line()
line.add_xaxis(df['日期'].tolist())
line.add_yaxis("最高温度", df['最高温'].tolist())
line.render("weather.html")  # 生成可交互的网页图表

五、重要注意事项(必看!)

  1. 合法合规第一条:每天抓取次数控制在20次以内,别把人家网站搞崩了
  2. 定时更新策略:建议设置每天凌晨自动运行(Windows可以用任务计划程序)
  3. 数据清洗技巧:遇到"霾转晴"这种复合天气,可以用.split()分割处理
  4. 异常处理机制:一定要加try-except,网络请求失败时自动重试

六、还能怎么玩?(扩展思路)

  • 抓取多个城市数据做对比分析
  • 结合历史数据预测未来天气
  • 接入短信API做异常天气预警
  • 开发微信小程序查询接口

七、最后说两句

爬虫就像一把瑞士军刀,用好了能解锁各种神奇操作!但千万记住:咱们只抓取公开可用数据,别碰用户隐私和敏感信息。建议新手从政府公开数据平台(比如国家统计局网站)开始练手,既安全又有价值~

(实操时遇到问题?欢迎在评论区交流~ 但注意不要留任何联系方式哦)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值