一、在jupyter中
中国气象局天气预报页面:https://weather.cma.cn/
墨迹天气:https://tianqi.moji.com/
以上两个网站,任选一个,爬取自己家乡例如天津,所在地区的气象数据:
所有爬取的数据,需要存入csv文件中,格式自定
实时气象数据:页面提供了几个就爬取几个
需要同时提交csv数据文件
天气数据爬取,天津地区
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
关注 1. 安装所需的库
如果您还没有安装
requests
和beautifulsoup4
库,可以使用以下命令安装:!pip install requests beautifulsoup4 pandas
2. 获取墨迹天气的天津实时数据
接下来,我们将抓取墨迹天气网站的实时气象数据,并将其保存为 CSV 文件。
import requests from bs4 import BeautifulSoup import pandas as pd # 天津的墨迹天气网页URL url = "https://tianqi.moji.com/weather/china/tianjin/" # 发送请求获取网页内容 response = requests.get(url) response.encoding = 'utf-8' # 解析网页内容 soup = BeautifulSoup(response.text, 'html.parser') # 选取实时气象数据的相关信息 weather_info = {} # 获取当前温度 weather_info['temperature'] = soup.find('p', class_='tem').text.strip() # 获取当前天气状况 weather_info['weather_condition'] = soup.find('p', class_='wea').text.strip() # 获取风力 weather_info['wind'] = soup.find('p', class_='win').text.strip() # 获取湿度 humidity = soup.find('p', class_='shidu') weather_info['humidity'] = humidity.text.strip() if humidity else 'N/A' # 获取空气质量 air_quality = soup.find('span', class_='air') weather_info['air_quality'] = air_quality.text.strip() if air_quality else 'N/A' # 获取当前时间(或日期) weather_info['time'] = soup.find('h1', class_='time').text.strip() # 打印出抓取的天气数据 print(weather_info) # 将数据存入CSV文件 df = pd.DataFrame([weather_info]) df.to_csv('tianjin_weather_data.csv', index=False, encoding='utf-8')
3. 代码解释
- 请求网页内容:我们使用
requests.get
来获取墨迹天气天津的网页内容。 - 解析网页内容:使用
BeautifulSoup
来解析 HTML 页面,并从中提取出我们需要的数据。 - 提取实时天气数据:我们从页面中选取温度、天气状况、风力、湿度、空气质量和当前时间等数据。
- 存储数据:通过
pandas
将抓取的数据保存为 CSV 文件。
4. 结果
执行以上代码后,您会得到一个名为
tianjin_weather_data.csv
的文件,内容类似于:temperature weather_condition wind humidity air_quality time 24℃ 多云 东风 56% 良 2024-11-07 13:00 该 CSV 文件包含了实时天气数据,您可以根据需要进行修改,抓取更多数据或调整格式。
需要注意的几点
- 网页结构的变化:如果网页的结构有所改变,您需要更新 CSS 选择器或 XPath 表达式。
- 反爬虫机制:如果网站启用了反爬虫机制,可能会被阻止访问。此时可以考虑使用代理或模拟浏览器请求。
- 数据存储:如果要抓取更多数据(例如未来几天的天气预报),可以通过扩展爬虫脚本来抓取。
解决 无用评论 打赏 举报- 请求网页内容:我们使用
悬赏问题
- ¥15 浮动div的高度控制问题。
- ¥66 换电脑后应用程序报错
- ¥50 array数据同步问题
- ¥15 pic16F877a单片机的外部触发中断程序仿真失效
- ¥15 Matlab插值拟合差分微分规划图论
- ¥15 keil5 target not created
- ¥15 C/C++数据与算法请教
- ¥15 怎么找志同道合的伙伴
- ¥20 如何让程序ab.eXe自已删除干净硬盘里的本文件自己的ab.eXe文件
- ¥20 关于#Mathcad符号引擎无响应#的问题,如何解决?