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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/478048.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度在下一盘大棋

这两天世界互联网大会在乌镇又召开了。 我看到一条新闻,今年世界互联网大会乌镇峰会发布“2024 年度中国互联网企业创新发展十大典型案例”,百度文心智能体平台入选。 这个智能体平台我最近也有所关注,接下来我就来讲讲它。 百度在下一盘大棋…

UG NX二次开发(C++)-UIStyler-指定平面的对象和参数获取

文章目录 1、前言2、在UG NX中创建平面和一个长方体,3、在UI Styler中创建一个UI界面4、在VS中创建一个工程4.1 创建并添加工程文件4.2 在Update_cb方法中添加选择平面的代码4.3 编译完成并测试效果1、前言 在采用NXOpen C++进行二次开发时,采用Menu/UIStyler是一种很常见的…

【软考】数据库

1. 数据模型 1.1 概念数据模型 概念数据模型一般用 E-R 图表示,常用术语如下: 实体:客观存在的事物,如:一个单位、一个职工、一个部门、一个项目。属性:学生实体有学号、姓名、出生日期等属性。码&#…

【强化学习的数学原理】第04课-值迭代与策略迭代-笔记

学习资料:bilibili 西湖大学赵世钰老师的【强化学习的数学原理】课程。链接:强化学习的数学原理 西湖大学 赵世钰 文章目录 一、值迭代算法二、策略迭代算法三、截断策略迭代算法四、本节课内容summary 一、值迭代算法 值迭代算法主要包括两部分。 第一…

jupyter notebook的 markdown相关技巧

目录 1 先选择为markdown类型 2 开关技巧 2.1 运行markdown 2.2 退出markdown显示效果 2.3 注意点:一定要 先选择为markdown类型 3 一些设置技巧 3.1 数学公式 3.2 制表 3.3 目录和列表 3.4 设置各种字体效果:加粗,斜体&#x…

Spring Boot3远程调用工具RestClient

Spring Boot3.2之后web模块提供了一个新的远程调用工具RestClient,它的使用比RestTemplate方便,开箱即用,不需要单独注入到容器之中,友好的rest风格调用。下面简单的介绍一下该工具的使用。 一、写几个rest风格测试接口 RestCont…

vscode可以编译通过c++项目,但头文件有红色波浪线的问题

1、打开 VSCode 的设置,可以通过快捷键 Ctrl Shift P 打开命令面板,然后搜索并选择 “C/C: Edit Configurations (JSON)” 命令,这将在 .vscode 文件夹中创建或修改 c_cpp_properties.json 文件 {"configurations": [{"name…

近源渗透|HID ATTACK从0到1

前言 对于“近源渗透”这一术语,相信大家已经不再感到陌生。它涉及通过伪装、社会工程学等手段,实地侵入企业办公区域,利用内部潜在的攻击面——例如Wi-Fi网络、RFID门禁、暴露的有线网口、USB接口等——获取关键信息,并以隐蔽的…

Python爬取豆瓣电影全部分类数据并存入数据库

在当今数字化的时代,网络上丰富的影视资源信息吸引着众多开发者去挖掘和利用。今天,我就来和大家分享一段有趣的代码,它能够从豆瓣电影平台获取相关数据并存储到数据库中哦。 结果展示(文末附完整代码): 目…

java: itext8.05 create pdf

只能调用windows 已安装的字体,这样可以在系统中先预装字体,5.0 可以调用自配文件夹的字体文件。CSharp donetItext8.0 可以调用。 /*** encoding: utf-8* 版权所有 2024 ©涂聚文有限公司 言語成了邀功盡責的功臣,還需要行爲每日來值班…

基于Java Springboot公园管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

Java中的File和IO流

File对象 File对象本质是一个文件或文件夹,用于写入和读取文件内容 注意:对于相对路径而言,在单元测试方法中的File是相对于Module,在main中的File是相对于Project 构造器 File(String pathname)File file1 new File("D:…

(Keil)MDK-ARM各种优化选项详细说明、实际应用及拓展内容

参考 MDK-ARM各种优化选项详细说明、实际应用及拓展内容 本文围绕MDK-ARM优化选项,以及相关拓展知识(微库、实际应用、调试)进行讲述,希望对你今后开发项目有所帮助。 1 总述 我们所指的优化,主要两方面: 1.代码大小(Size) 2.代码性能(运行时间) 在MDK-ARM中,优…

ssm实战项目──哈米音乐(二)

目录 1、流派搜索与分页 2、流派的添加 3、流派的修改 4、流派的删除 接上篇:ssm实战项目──哈米音乐(一),我们完成了项目的整体搭建,接下来进行后台模块的开发。 首先是流派模块: 在该模块中采用分…

STM32的中断(什么是外部中断和其他中断以及中断号是什么)

一、什么是EXTI 和NVIC EXTI(External Interrupt/Event Controller)EXTI 是外部中断/事件控制器,它负责处理外部信号变化,并将信号传递给中断控制器(如 NVIC)。主要负责以下功能: 外部事件检测…

5、AI测试辅助-生成测试用例思维导图

AI测试辅助-生成测试用例思维导图 创建测试用例两种方式1、Plantuml思维导图版本 (不推荐)2、Markdown思维导图版本(推荐) 创建测试用例两种方式 完整的测试用例通常需要包含以下的元素: 1、测试模块 2、测试标题 3、前置条件 4、…

IDEA 2024安装指南(含安装包以及使用说明 cannot collect jvm options 问题 四)

汉化 setting 中选择插件 完成 安装出现问题 1.可能是因为之前下载过的idea,找到连接中 文件,卸载即可。

js+jquery实现经典推箱子游戏

纯前端项目,只使用html,css,js,jquery实现经典推箱子游戏,直接下载本地双击index.html即可运行体验。 游戏展示 开始界面 完成游戏 代码展示

《文件操作》

一 . 文本文件和二进制文件 根据数据的组织形式,数据文件被分为了二进制文件和文本文件 数据在内存中是以二进制的形式存储,如果不加转换的输出到外存的文件中,就是二进制文件。 如果要求在外存上以ASCII 码的形式存储,则需要再存…

监控报警系统的指标、规则与执行闭环

随笔 从千万粉丝“何同学”抄袭开源项目说起,为何纯技术死路一条? 数据源的统一与拆分 监控报警系统的指标、规则与执行闭环 java 老矣,尚能饭否? 一骑红尘妃子笑,无人知是荔枝来! 有所依 我们如何知道系统交易…