我的编程空间,编程开发者的网络收藏夹
学习永远不晚

使用python实现定时报天气的示例代码

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

使用python实现定时报天气的示例代码

前言

如果你和我一样偶尔看看股票,看看自己关注的股票是涨了还是跌了,或者想快速获取到想看的头条新闻,我们不必把过多的注意力放在去寻找上面,我们只需要让爬虫程序每天自动为你发送你想要了解的信息就可以了,这样就能掌控我们的注意力,更好的去享受生活。

一.分析爬取目标

这里就不爬取股票的信息,我来爬一个天气预报的信息,然后实现每天定时发送。打开下面的链接就能跳转到中国气象网
http://www.weather.com.cnnn/

在这里插入图片描述

点击温度那个位置就可以进入下面的图

在这里插入图片描述

我们可以看到7天的天气和8-15天的天气,再往后对我们来说就没必要了。我们查看七日的天气预报,直接爬11日的天气,鼠标右键->检查->Network->刷新网页->查看列表第一个,再点击preview

在这里插入图片描述

可以看到数据在HTML里面,然后回到element

在这里插入图片描述

可以发现,温度数据放在<p class="tem">之下。“多云”所在的位置是<p title="晴" class="wea">晴</p>

在这里插入图片描述


import requests

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}

# 封装headers
#这里对应的是我选的城市,可以换自己所在城市
url = 'http://www.weather.com.cn/weather/101010100.shtml'

# 把URL链接赋值到变量url上

res = requests.get(url, headers=headers)

# 发送requests请求,并把响应的内容赋值到变量res中。

print(res.text)

# 打印出res对象的网页源代码

print(res.status_code)

# 检查响应状态是否正常

看结果可以看到是响应是正常的,但是出现了乱码。但是莫慌。加上一句res.encoding='utf-8'就行了。

在这里插入图片描述

接下来就可以写完整的爬取信息的代码了


import requests

from bs4 import BeautifulSoup



headers={'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36'}

#封装headers

url='http://www.weather.com.cn/weather/101010100.shtml'

#把URL链接赋值到变量url上

res=requests.get(url,headers=headers)

#发送requests请求,并把响应的内容赋值到变量res中

res.encoding='utf-8'



bsdata=BeautifulSoup(res.text,'html.parser')

#使用bs模块解析获取到的数据

data_temperature= bsdata.find(class_='tem')

#使用find()取出天气的温度数据

data_weather= bsdata.find(class_='wea')

#使用find()取出天气的文字描述

print(data_temperature.text)

#取出变量data_temperature中的字符串内容,并打印

print(data_weather.text)

#取出变量data_weather中的字符串内容,并打印

可以成功的得到需要的数据。

在这里插入图片描述

其实最难的不是爬虫,爬这种信息新手应该都会,接下里才是重头戏。

二.信息的发送

如果我们想要实现发送邮件,这里以qq邮件为例要经过以下的步骤:

  • 连接邮件服务器
  • 使用邮箱账号密码登录
  • 填写收件人,主题,正文等
  • 发送邮件

所以连接服务器要用到用到smtplib库,填写主题和撰写正文,需要用到email库(python真的是yyds)

1.连接服务器

SMTP代表简单邮件传输协议,相当于一种计算机之间发邮件的约定

smtplib是不需要安装的,smtplib是python的一个内置库,有兴趣的小伙伴可以看看官方文档

看下面的代码


import smtplib
mailhost='smtp.qq.com'
#把qq邮箱的服务器地址赋值到变量mailhost上,地址需要是字符串的格式。
qqmail = smtplib.SMTP()
#实例化一个smtplib模块里的SMTP类的对象,这样就可以SMTP对象的方法和属性了
qqmail.connect(mailhost,25)
#连接服务器,第一个参数是服务器地址,第二个参数是SMTP端口号

**mailhost=‘smtp.qq.com'**这句是qq邮箱的服务器地址,这个是可以查得到的

用SMTP对象的connect()方法连接服务器,第一个参数是获取到的服务器地址,第二个参数是SMTP端口号——25。端口号的选择不是唯一的,但是25是一个最简单、最基础的端口号,所以我们填25。

2.获取账号和密码

此密码非彼密码,这个密码需要我们去到这里获取:https://mail.qq.com/,登录你的邮箱。然后点击位于顶部的【设置】按钮,选择【账户设置】。

在这里插入图片描述

下拉到这个位置

在这里插入图片描述

点击开启第一个,然后得到授权码,如果以前获取过但是忘了,就需要发送短信重新获取,这个码一定不要外漏!!!

在这里插入图片描述


import smtplib

mailhost='smtp.qq.com'
#把qq邮箱的服务器地址赋值到变量mailhost上

qqmail = smtplib.SMTP()
#实例化一个smtplib模块里的SMTP类的对象,这样就可以SMTP对象的方法和属性了

qqmail.connect(mailhost,25)
#连接服务器,第一个参数是服务器地址,第二个参数是SMTP端口号。

sender = input('请输入你的邮箱:')
#获取邮箱账号

password = input('请输入你的密码:')
#获取邮箱密码

qqmail.login(sender,password)
#登录邮箱,第一个参数为邮箱账号,第二个参数为邮箱密码

receiver=input('请输入收件人的邮箱:')
#获取收件人的邮箱

所填密码就是刚才获取的授权码

3.填写主题和撰写正文

在这里就需要用到email库。


from email.mime.text import MIMEText

from email.header import Header

content=input('请输入邮件正文:')

#输入你的邮件正文

message = MIMEText(content, 'plain', 'utf-8')

#实例化一个MIMEText邮件对象,该对象需要写进三个参数,分别是邮件正文,文本格式和编码

subject = input('请输入你的邮件主题:')

#用input()获取邮件主题  

message['Subject'] = Header(subject, 'utf-8')

我们还需要引入了email库中的MIMEText模块和Header模块
最后一行代码:在等号的右边,是实例化了一个Header邮件头对象,该对象需要写入两个参数,分别是邮件主题和编码,然后赋值给等号左边的变量message[‘Subject'],message[‘Subject']就代表着根据MIMEText类里面的Subject的属性名取到该属性

代码有注释还不明白的话可以去看看文档,

4.发送邮件和退出邮箱

将前面的代码整合以下


from email.mime.text import MIMEText

from email.header import Header

#引入Header和MIMEText模块

content=input('请输入邮件正文:')

#输入你的邮件正文

message = MIMEText(content, 'plain', 'utf-8')

#实例化一个MIMEText邮件对象,该对象需要写进三个参数,分别是邮件正文,文本格式和编码

subject = input('请输入你的邮件主题:')

#用input()获取邮件主题

message['Subject'] = Header(subject, 'utf-8')

qqmail.sendmail(sender, receiver, message.as_string())

qqmail.quit()
#退出邮箱

sendmail() 发送邮件,括号里面有三个参数,第1个是发件人的邮箱地址,第2个是收件人的邮箱地址,第3个是正文,但必须是字符串格式,所以用as_string()函数转换了一下。

但是我们希望发送成功后能显示“邮件发送成功”,失败的时候能提示我们“邮件发送失败”,可以使用try语句来实现。


try:
    qqmail.sendmail(sender, receiver, message.as_string())
    print ('邮件发送成功')
except:
    print ('邮件发送失败')
qqmail.quit()

三.定时发送

关于时间,其实Python有两个内置的标准库——time和datetime,但是我们不用,诶,就是玩,我们可以用第三方库schedule其实是有原因的:对于我们需要的定时功能,time和datetime当然能实现,但操作逻辑会相对复杂;而schedule就是可以直接解决定时功能,代码比较简单,这是我们选择schedule的原因。
官方文档链接:https://pypi.org/project/schedule/
根据文档我们做一个每3秒运行一次的程序


import schedule
import time
#引入schedule和time模块
def job():
    print("Working in progress...")
#定义一个叫job的函数,函数的功能是打印'I'm working...'
schedule.every(3).seconds.do(job)        
while True:
    schedule.run_pending()
    time.sleep(1)

也可以设置在某个时间发送,用法很多,这里就不展开。最后把这些代码全部合并整合一下,下面看效果

四.效果

在这里插入图片描述

这里我定的下午三点四十六,然后发送成功,我打开我的邮箱确实能收到

在这里插入图片描述

这个功能我放在服务器上用了很久了,爬一些平时自己必看的信息,然后发送,减少了自己被其他东西吸引注意力的几率。

这篇文章不在于爬取天气信息这块,而是通过这种方式去实现定时发送邮件,只要用的好能为自己省下很多的时间和精力去在信息大海里面查找自己想要的信息。

到此这篇关于使用python实现定时报天气的示例代码的文章就介绍到这了,更多相关python 定时报天气内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

使用python实现定时报天气的示例代码

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用python实现定时报天气

小编给大家分享一下如何使用python实现定时报天气,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一.分析爬取目标这里就不爬取股票的信息,我来爬一个天气预报的信息
2023-06-25

python定时利用QQ邮件发送天气预报的实例

大致介绍 好久没有写博客了,正好今天有时间把前几天写的利用python定时发送QQ邮件记录一下 1、首先利用request库去请求数据,天气预报使用的是和风天气的API(www.heweather.com/douments/api/s6/w
2022-06-04

使用Python实现tail的示例代码

tail是一个常用的Linux命令,它可以打印文件的后面n行数据,也能实时输出文件的追加数据。本文就来用Python实现tail,感兴趣的可以了解一下
2023-03-01

node.js 用socket实现聊天的示例代码

本文介绍了node.js 用socket实现聊天的示例代码,分享给大家,也给自己留个笔记,具体如下:服务器搭建app.jsconst http = require("http"); const express = require("./ex
2022-06-04

Java实现定时任务的示例代码

这篇文章主要为大家详细介绍了Java实现定时任务的相关知识,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-21

C#实现定时任务Task Scheduler的示例代码

本文介绍了使用C#的TaskSchedulerAPI创建和管理计划任务的示例代码。TaskScheduler允许开发人员安排在特定时间或间隔执行的任务,即使应用程序未运行。文章提供了创建、配置、注册和取消注册任务的代码示例,还涵盖了查询任务、启用/禁用任务以及立即运行任务等其他功能。通过使用TaskSchedulerAPI,开发人员可以自动化后台任务,例如数据处理、电子邮件发送和文件备份。
C#实现定时任务Task Scheduler的示例代码
2024-04-02

node实现定时发送邮件的示例代码

本文介绍了node实现定时发送邮件的示例代码,分享给大家,具体如下:定时发送,可做提醒使用nodemailernodemailer 是一款简单易用的基于于SMTP协议(或 Amazon SES)的邮件发送组件croncron可以指定每隔一段
2022-06-04

Express实现定时发送邮件的示例代码

在开发中我们有时候需要每隔 一段时间发送一次电子邮件,或者在某个特定的时间进行发送邮件,无需手动去操作,基于这样的情况下我们需要用到了定时任务。本文就来用Express实现定时发送邮件吧
2023-05-15

SpringBoot实现动态定时任务的示例代码

在SpringBoot项目中简单使用定时任务,不过由于要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活。现在我们就来实现可以动态修改cron表达式的定时任务,感兴趣的可以了解一下
2022-11-13

java定时器timer的使用方法代码示例

1.首先肯定是容器一启动就要启动定时器,所以我们可以选择把定时器写在一个监听器里,容器一启动所以监听器也就跟着启动,然后定时器就可以工作了。第一步,把自己写的监听器加到web.xml中;第二步,写一个监听器,实现ServletContex
2023-05-30

Python使用Qt5实现水平导航栏的示例代码

本文主要介绍了Python使用Qt5实现水平导航栏的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-03-06

Spring @Async 的使用与实现的示例代码

首先Spring AOP有两个重要的基础接口,Advisor和PointcutAdvisor,接口声明如下:Advisor接口声明:public interface Advisor { Advice getAdvice(); boole
2023-05-31

快速实现基于Python的微信聊天机器人示例代码

最近听说一个很好玩的图灵机器人api,正好可以用它做一个微信聊天机器人,下面是实现# test.pyimport requests import itchat #这是一个用于微信回复的库KEY = '8edce3ce905a4c1dbb96
2022-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录