• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-09) 17次浏览 已收录 0个评论
文章目录[隐藏]

前言

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

一.分析爬取目标

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

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'就行了。

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

二.信息的发送

如果我们想要实现发送邮件,这里以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)        
<em>本文来源[email protected]搞@^&代*@码)网5</em>while True:
    schedule.run_pending()
    time.sleep(1)

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

四.效果

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

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

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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:使用python实现定时报天气的示例代码

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址