Python爬取7天天气
需要的包
- requests
- BeautifulSoup
- openpyxl
安装包
pip install [包名]
代码演示
import datetime;
import requests;
from bs4 import BeautifulSoup as bs;
from openpyxl import Workbook;
import re;
url='http://www.weather.com.cn/weather/101181701.shtml';
header={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
response=requests.get(url=url,headers=header);
print(response.status_code);
response.encoding=response.apparent_encoding;
html_doc=response.text;
soup=bs(html_doc,'html.parser');
weather_data_list=soup.find_all('p',class_='tem');
tagToday=soup.find('p',class_="tem")
try:
temperatureHigh = tagToday.span.string
except AttributeError as e:
temperatureHigh =\
tagToday.find_next('p',class_="tem").span.string
print(f"今天最高温度:{temperatureHigh}");
tem_list=[];
now = datetime.datetime.now();
reg_digital='\-?\d+\.?\d*'
today_high_temper=re.findall(reg_digital,temperatureHigh);
today_low_temper=re.findall(reg_digital,tagToday.i.string);
tem_list.append((now.strftime("%Y-%m-%d"),int(today_high_temper[0]),int(today_low_temper[0])));
print(tem_list);
date=now;
for weather_data in weather_data_list[1:7]:
date = date + datetime.timedelta(days=1)
high_digital=re.findall(reg_digital,weather_data.span.string);
low_digital=re.findall(reg_digital,weather_data.i.string);
tem_list.append((date.strftime("%Y-%m-%d"),int(high_digital[0]),int(low_digital[0])));
print(tem_list);
wb=Workbook();
date_high_low=wb.active;
date_high_low.title=("7天日期统计分析");
date_high_low.append(["日期","最高温","最低温"]);
for row in tem_list:
date_high_low.append(row);
wb.save("temper.xlsx");
from openpyxl import load_workbook
from openpyxl.chart import LineChart, Reference;
wb = load_workbook("temper.xlsx");
ws=wb["7天日期统计分析"];
date_line=Reference(ws,min_col=1,min_row=2,max_row=8);
temper_data=Reference(ws,min_col=2,max_col=3,min_row=2,max_row=8);
chart=LineChart();
chart.title="7天气温统计分析";
chart.x_axis.title="日期";
chart.y_axis.title="温度";
chart.add_data(temper_data);
chart.set_categories(date_line);
chart.legend = None;
line_style = chart.series[0];
line_style.smooth = False;
ws.add_chart(chart, "D2");
wb.save("line.xlsx");
最终效果
- 效果演示图

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人