欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > Python爬虫项目 | 二、每日天气预报

Python爬虫项目 | 二、每日天气预报

2024/12/24 10:25:48 来源:https://blog.csdn.net/weixin_39347873/article/details/143921129  浏览:    关键词:Python爬虫项目 | 二、每日天气预报

文章目录

  • 1.文章概要
    • 1.1 实现方法
    • 1.2 实现代码
    • 1.3 最终效果
      • 1.3.1 编辑器内打印显示效果
      • 实际应用效果
  • 2.具体讲解
    • 2.1 使用的Python库
    • 2.2 代码说明
      • 2.2.1 获取天气预报信息
      • 2.2.2 获取当天日期信息,格式化输出
      • 2.2.3 调用函数,输出结果
    • 2.3 过程展示
  • 3 总结

1.文章概要

继续学习Python爬虫知识,实现简单的案例,发送每日天气预报

1.1 实现方法

本文使用Python中常用的requests、BeautifulSoup来实现的

1.2 实现代码

以下是本项目全部代码

# author by mofitte
# vx:mofitte 
# date 2024年11月20日
from datetime import datetime
import requests
from bs4 import BeautifulSoupdef get_weather():# 目标URL,这里我选择青海西宁url = 'https://www.weather.com.cn/weather1d/101150101.shtml'try:response = requests.get(url)response.encoding = 'utf-8'response.raise_for_status()# 解析HTML内容soup = BeautifulSoup(response.text, 'html.parser')# 提取天气预报信息,这里需要根据实际页面结构来定位元素# 假设天气预报信息在一个id为"7d"的div标签内forecast_div = soup.find('div', id='today')# 检查是否找到了forecast_divif forecast_div is not None:# 继续解析forecast_div中的内容,这里需要根据实际结构来编写# 假设每天的天气预报在一个class为"t clearfix"的div标签内daily_forecasts = forecast_div.find_all('div', class_='t')# 打印每天的天气预报信息for daily_forecast in daily_forecasts:data = get_today_date()  # 获取日期weather = daily_forecast.find('p', class_='wea').text  # 获取天气状况temperature = daily_forecast.find('p', class_='tem').text.strip()  # 获取温度print(f'今天是:{data}'+f',天气:{weather}'+f',温度:{temperature}')else:print("暂未获取到今日天气预报信息。")except Exception as e:print(f"解析网页时发生错误:{e}")def get_today_date():return datetime.now().strftime("%Y-%m-%d")  # 返回当前日期get_weather()

1.3 最终效果

1.3.1 编辑器内打印显示效果

在这里插入图片描述

实际应用效果

== 这里我是用力微信机器人,在指定的某个群内定时发布每日天气预报信息==
在这里插入图片描述

2.具体讲解

2.1 使用的Python库

1.datetime:时间库;
2.BeautifulSoup: 一个用于解析HTMLXML文档的Python库;
3.requests:一个Python第三方库,用于发送HTTP请求;

2.2 代码说明

2.2.1 获取天气预报信息

def get_weather():# 目标URL,这里我选择青海西宁,101150101是西宁的代码,这里可以替换为其他城市的信息,详见目标网站源码JS文件url = 'https://www.weather.com.cn/weather1d/101150101.shtml'try:response = requests.get(url)response.encoding = 'utf-8'response.raise_for_status()# 解析HTML内容soup = BeautifulSoup(response.text, 'html.parser')# 提取天气预报信息,这里需要根据实际页面结构来定位元素# 假设天气预报信息在一个id为"7d"的div标签内forecast_div = soup.find('div', id='today')# 检查是否找到了forecast_divif forecast_div is not None:# 继续解析forecast_div中的内容,这里需要根据实际结构来编写# 假设每天的天气预报在一个class为"t clearfix"的div标签内daily_forecasts = forecast_div.find_all('div', class_='t')# 打印每天的天气预报信息for daily_forecast in daily_forecasts:data = get_today_date()  # 获取日期weather = daily_forecast.find('p', class_='wea').text  # 获取天气状况temperature = daily_forecast.find('p', class_='tem').text.strip()  # 获取温度print(f'今天是:{data}'+f',天气:{weather}'+f',温度:{temperature}')else:print("暂未获取到今日天气预报信息。")except Exception as e:print(f"解析网页时发生错误:{e}")

2.2.2 获取当天日期信息,格式化输出

def get_today_date():return datetime.now().strftime("%Y-%m-%d")  # 返回当前日期

2.2.3 调用函数,输出结果

get_weather()   # 调用函数

2.3 过程展示

在这里插入图片描述

3 总结

本案例是采用了requests库来简单获取数据,过程还是相对简单的;遇到的难题还是在实际应用中,机器人调用遍历每日天气预报信息问题,最后还是结果了,哈哈哈,继续学习。

看到这里了,我只希望能点个赞,谢谢

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com