手把手教你用Python爬取全国天气数据(附完整代码)!!!
文章目录
温馨提示:本教程仅供学习交流,请遵守网站使用规则,不要高频访问目标网站!!!
一、爬虫原理大揭秘(简单易懂版)
爬虫其实就是自动化网页机器人!!它的工作流程就像这样:
- 发送HTTP请求 -> 2. 接收响应 -> 3. 解析数据 -> 4. 存储结果
举个栗子🌰:就像你打开浏览器访问天气预报网站,然后把看到的数据手动抄下来。只不过现在让Python代码帮你自动完成整个过程!(是不是很酷?)
二、准备工作(3分钟搞定)
需要安装的库:
pip install requests beautifulsoup4 pandas
推荐开发工具:
- VS Code(新手友好)
- Jupyter Notebook(交互式调试更方便)
- Chrome浏览器(开发者工具必备)
三、实战开始!上代码!!
步骤1:分析目标网站结构
我们以中国天气网为例(https://www.weather.com.cn/)
按F12打开开发者工具 -> 点击元素选择器 -> 找到城市和温度数据对应的HTML标签
(关键发现!!)城市名在<a class="name">标签,温度在<span class="temp">标签
步骤2:发送HTTP请求
import requests
url = "http://www.weather.com.cn/textFC/hb.shtml"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
}
try:
response = requests.get(url, headers=headers, timeout=10)
response.encoding = 'utf-8' # 解决中文乱码
print("请求成功!状态码:", response.status_code)
except Exception as e:
print("请求失败!!!错误信息:", e)
步骤3:解析数据(BeautifulSoup大显身手)
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.text, 'html.parser')
cities = []
temps = []
# 抓取城市名称
for city in soup.find_all('a', class_='name'):
cities.append(city.text.strip())
# 抓取温度数据
for temp in soup.find_all('span', class_='temp'):
temp_tags = temp.text.split('/')
if len(temp_tags) > 1: # 防止空数据
temps.append(temp_tags[0].strip())
步骤4:保存结果(CSV格式)
import pandas as pd
df = pd.DataFrame({
'城市': cities,
'温度': temps
})
df.to_csv('weather_data.csv', index=False)
print("数据保存成功!!快去查看weather_data.csv文件吧~")
四、数据可视化(让数据会说话!)
温度分布折线图
import matplotlib.pyplot as plt
plt.figure(figsize=(12,6))
plt.plot(df['城市'][:20], df['温度'][:20], 'r--o')
plt.title('华北地区温度分布')
plt.xlabel('城市')
plt.ylabel('温度(℃)')
plt.xticks(rotation=45)
plt.grid(True)
plt.show()

五、高级技巧(避坑指南)
-
反爬对策:
- 随机User-Agent(重要!!!)
- 使用代理IP池
- 设置随机请求间隔(time.sleep(2))
-
异常处理:
from retrying import retry @retry(stop_max_attempt_number=3) def safe_request(url): # 包含超时、重试机制的请求 -
定时任务:
用Windows任务计划或Linux crontab设置每天自动运行
六、常见问题Q&A
Q:为什么我抓不到数据?
A:检查:①网页结构是否变化 ②是否触发反爬 ③编码是否正确
Q:数据抓取不全怎么办?
A:尝试增加延迟/更换IP/模拟浏览器(Selenium方案)
Q:会被抓去喝茶吗?
A:遵守robots.txt协议!单次少量抓取学习用途没问题~
七、完整代码获取
(项目已上传GitHub,私信回复"天气爬虫"获取源码包!包含可视化+数据存储+定时任务完整版)
今日作业:
尝试修改代码抓取其他地区的天气数据,并在评论区晒出你的运行结果!(前10名有惊喜🎁)
下期预告:用Scrapy框架打造分布式天气预警系统!想知道如何实时监控极端天气?记得关注哦~
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)