爬取上海市2021和2022两年的历史天气数据(http://www.tianqihoubao.com/lishi/shanghai.html%EF%BC%89 通过正则表达式提取日期、天气、温度、风力风向,写入csv文件 编写代码,运行并提交
时间: 2024-10-18 17:06:18 浏览: 71
为了完成这个任务,你需要编写Python代码,利用requests库获取网页内容,BeautifulSoup库解析HTML,然后使用正则表达式提取所需信息,并将结果保存到CSV文件中。这里是一个简化的示例,假设你已经有了BeautifulSoup库:
```python
import requests
from bs4 import BeautifulSoup
import csv
# 请求URL
url = "http://www.tianqihoubao.com/lishi/shanghai.html"
response = requests.get(url)
html_content = response.text
# 使用BeautifulSoup解析HTML
soup = BeautifulSoup(html_content, 'lxml')
# 提取日期、天气、温度、风力风向的元素位置(这里只是一个假设,实际结构需要查看网站源码)
date_elements = soup.find_all('span', class_='date') # 示例:查找包含日期的`span`元素
weather_elements = soup.find_all('div', class_='weather') # 示例:查找包含天气的`div`元素
temperature_elements = soup.find_all('p', class_='temperature') # 示例:查找包含温度的`p`元素
wind_elements = soup.find_all('span', class_='wind') # 示例:查找包含风力风向的`span`元素
data = []
for i in range(len(date_elements)):
date = date_elements[i].text.strip()
weather = weather_elements[i].text.strip()
temperature = temperature_elements[i].text.split()[0] # 假设温度在第一个单词
wind = wind_elements[i].text.strip() if wind_elements else '无数据' # 如果找不到风力风向,则标记为无数据
data.append([date, weather, temperature, wind])
# 将数据写入CSV文件
with open('shanghai_weather_2021_2022.csv', 'w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(['日期', '天气', '温度', '风力风向'])
writer.writerows(data)
阅读全文