想爬取中国天气网的数据,并分析一下天气情况?这事儿不难,咱们今天来学一学怎么用Python实现。我们会用到的主要库有requests
(用来请求网页数据)、BeautifulSoup
(解析网页内容)和pandas
(用来分析和存储数据)。话不多说,直接上代码!
1. 安装依赖
先装好需要的库:
pip install requests beautifulsoup4 pandas
2. 爬取天气数据
我们从中国天气网爬取城市天气数据。以北京市为例,爬取实时天气、气温、湿度等信息。
import requests
from bs4 import BeautifulSoup
# 请求网页内容
url = "http://www.weather.com.cn/weather/101010100.shtml" # 北京的天气页面
response = requests.get(url)
response.encoding = 'utf-8'
# 解析网页内容
soup = BeautifulSoup(response.text, 'html.parser')
# 找到天气数据所在的标签
weather = soup.find('div', class_='t').find('ul').find_all('li')
# 提取数据
forecast = []
for item in weather:
date = item.find('h1').text.strip()
temp = item.find('p', class_='tem').text.strip()
wind = item.find('p', class_='win').text.strip()
forecast.append({"date": date, "temperature": temp, "wind": wind})
# 打印天气预报
for day in forecast:
print(f"日期: {day['date']}, 温度: {day['temperature']}, 风速: {day['wind']}")
3. 数据存储和分析
爬取的数据可以存到pandas
DataFrame里,方便后续分析。假设你要分析天气的温度变化,可以按日期存储:
import pandas as pd
# 将数据转化为DataFrame
df = pd.DataFrame(forecast)
# 以日期为索引,展示数据
df.set_index('date', inplace=True)
print(df)
4. 处理爬虫问题
爬虫最常遇到的问题就是反爬机制。中国天气网这类网站常常会限制访问频率或者要求验证码。这时候你可以加个headers来模拟浏览器访问,或者加个延时,避免被封IP。
添加请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
response = requests.get(url, headers=headers)
设置延时
import time
time.sleep(1) # 每次请求间隔1秒
这样就能避免过于频繁的请求被封禁。
5. 总结
到这里,咱们已经成功爬取并分析了天气数据。其实,爬虫的精髓就在于熟悉网页结构,能快速提取需要的数据。在真实项目中,遇到反爬和解析问题时可以根据具体情况进行调整。
如果你正在学习Python,那么你需要的话可以,点击这里👉Python重磅福利:入门&进阶全套学习资料、电子书、软件包、项目源码等等免费分享!或扫描下方优快云官方微信二维码获娶Python入门&进阶全套学习资料、电子书、软件包、项目源码