python获取辽宁省所有市的近七天的天气信息输出到excel
时间: 2024-06-09 21:06:53 浏览: 100
首先,我们需要使用第三方库 requests 和 BeautifulSoup 来爬取天气信息。另外,我们需要安装 openpyxl 来操作 Excel 文件。
以下是代码实现:
```python
import requests
from bs4 import BeautifulSoup
from openpyxl import Workbook
from datetime import datetime, timedelta
# 获取当前日期
today = datetime.now().strftime("%Y-%m-%d")
# 创建一个 Excel 工作簿
wb = Workbook()
ws = wb.active
ws.title = "天气信息"
# 设置表头
ws.cell(row=1, column=1, value="城市")
for i in range(1, 8):
date = (datetime.strptime(today, "%Y-%m-%d") + timedelta(days=i-1)).strftime("%m-%d")
ws.cell(row=1, column=i+1, value=date)
# 获取城市列表
url = "http://www.weather.com.cn/textFC/hb.shtml"
res = requests.get(url)
res.encoding = "utf-8"
soup = BeautifulSoup(res.text, "html.parser")
cities = soup.select("#forecastID ul li a")
# 爬取天气信息
for city in cities:
city_name = city.text
city_url = city["href"]
res = requests.get(city_url)
res.encoding = "utf-8"
soup = BeautifulSoup(res.text, "html.parser")
lis = soup.select("#7d ul li")
weather_list = [city_name]
for li in lis:
date = li.select(".time")[0].text.strip()
if "日" in date:
date = today.split("-")[0] + "-" + date.replace("日", "")
else:
date = today.split("-")[0] + "-" + date
if date > today:
weather = li.select(".wea")[0].text.strip()
weather_list.append(weather)
if len(weather_list) == 8:
ws.append(weather_list)
# 保存 Excel 文件
wb.save("weather.xlsx")
```
代码解释:
1. 首先,我们获取当前日期并创建一个 Excel 工作簿。
2. 然后,我们设置表头,包括城市和近七天的日期。
3. 接着,我们爬取城市列表,并遍历每个城市,爬取其近七天的天气信息。
4. 最后,我们将天气信息写入 Excel 文件并保存。
注意事项:
1. 由于天气预报的时间是以当地时间为准,因此在爬取天气信息时需要注意时差问题,否则可能会出现日期错误的情况。
2. 代码中使用了定位元素的方式,如果天气预报页面结构发生变化,可能会导致无法正确爬取天气信息。
阅读全文