以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,

·作者:@Yhen
·原文网站:CSDN
·原文链接:https://blog.csdn.net/Yhen1/article/details/107223120

转载请说明此出处,侵权必究!谢谢合作!

大噶好,我是python练习时长3个月的Yhen。

在上篇文章中,我已经详细介绍了第一步——微博爬虫
传送门:【python热搜爬虫+定时发送邮件操作①】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

这篇文章将为大家分享第二步——定时发送邮箱操作

希望大家能够喜欢!

文章目录

  • 一.最终效果展示
  • 二.前期准备
  • 三.代码实战
  • 四.往期文章回顾

一.最终效果展示


不错吧~以后每天一睡醒,打开微信查看今天的邮件就可以知道今天的热搜信息了,哪还要打开软件这么麻烦呀,美滋滋 ~

大家看完这两篇文章后就可以实现这样的效果啦~

话不多说,马上起飞

二.前期准备

①库的准备和安装

今天要介绍的是定时发送邮件,这是今天要用到的库以及在这篇文章中的使用方式

smtplib     连接邮箱服务器

time     用于设置延时

email     填写邮件头和邮件内容

schedule     用于设置定时任务

大家安装第三方库的时候只需要在终端输入 pip install +对应的库名即可。如(pip install schedule)

第三方库准备后,还不够哦

②开通QQ邮箱的SMTP服务(以QQ邮箱为例,其他邮箱大同小异)

开通的方式也很简单

首先在邮箱首页右上角找到自己的头像,点击
点击设置

如图,找到第三方服务
点击开启服务

然后会让你进行身份验证

认证成功后,你就有了授权码啦~成功开通了SMTP服务啦
授权码最好记下来,因为等下登录服务器的时候要用到

都准备好以后,就可以愉快的开始实操啦

三.代码实战

首先将要用到的库导入(今天要结合上一篇的内容,所以也需要爬虫库)

import requests
import smtplib
import schedule
import time
from pyquery import PyQuery as pq
from email.mime.text import MIMEText
from email.header import Header
import datetime

然后将上一篇爬热搜的代码封装成WeiBo_Spider函数

def WeiBo_Spider():global date# 微博热搜网址url = 'https://s.weibo.com/top/summary'# 请求微博热搜网址 获取其文本数据res = requests.get(url).text# 数据初始化doc = pq(res)# 通过类选择题提取热搜信息td = doc('.td-02 a').items()# 遍历数据for x in td:# 获取热搜文字title = x.text()# 获取热搜链接 并拼接成完整链接href = 'https://s.weibo.com' + x.attr('href')# 将文字和链接合并在一个content变量中content = title + '\n' + href + '\n\n'# 获取今日日期,并转换为字符串的形式。以此日期命名建立文件路径date = datetime.datetime.now().strftime('%Y-%m-%d')# 将文件保存以日期命名的txt文件 以追加的方式写入 编码为utf-8f = open(date + '.txt', 'a', encoding='utf-8')# 将热搜内容写入f.write(content)# 关闭写入

然后开始今天发送邮件的内容

首先定义一个发送邮件的函数
实例化一个SMTP对象后,通过SMTP连接到QQ邮箱的服务器,使用25的端口号

def send_email():# QQ邮箱的服务器地址mailhost='smtp.qq.com'# 实例化一个SMTP对象mail = smtplib.SMTP()# 使用SMTP连接QQ邮箱服务器,端口号使用25mail.connect(mailhost,25)

定义发件人的邮箱,密码(这里的密码就是前期准备时的那个授权码),以及收件人的邮箱地址

然后登录邮箱

sender = '你的QQ邮箱地址'
password = '开通SMTP时的授权码'
receiver = '收件人的邮箱地址'
# 登录邮箱
mail.login(sender,password)

然后将热搜爬虫爬到的内容,读取出来

注意:这里的date和爬虫函数里面的date是一样的,为了能够在这个函数中能够使用到date,要在上一个函数中将date设置为全局变量(global date)

# 读取保存的热搜txt文件的内容
f = open(date + '.txt', 'r', encoding='utf-8')
a = f.read()

然后将热搜数据写入邮件文本内容

# 写入邮件文本内容
message = MIMEText(a, 'plain', 'utf-8')

定义邮件的标题

# 定义邮件的标题
subject = '今日微博热搜'
message['Subject'] = Header(subject, 'utf-8')

最后再加一个异常捕获,发送邮件的部分就完成啦

# 异常捕获 若无错误执行以下代码
try:mail.sendmail(sender, receiver, message.as_string())print ('邮件发送成功')# 若报错则打印邮件发送错误信息
except:print ('邮件发送失败')
mail.quit()

接下来再定义一个任务函数

# 定义一个任务开始函数
def job():print('开始发送邮件')# 执行微博爬取任务WeiBo_Spider()# 执行发送邮件任务send_email()print(date+'任务完成')

下面是定时的操作
很简单,一行代码

比如说你想在每天的8点让程序给你发送邮件的话

# 在每天的固定时间执行任务函数
schedule.every().day.at("08:00").do(job)

即在每天的8点执行任务函数,而任务函数中就调用了爬虫函数和发送邮箱函数

最后是一个代码的部署检查

# 每隔一秒钟检查部署情况
while True:schedule.run_pending()time.sleep(1)

演示一下效果

现在是11:49,我让程序11:50给我发邮件

11:50,程序运行

我的邮箱也准时收到邮件

也成功获取到热搜的内容

链接点进去是这样的


没有一点点毛病吧~

当然,还是有美中不足的地方的

如果你想要每天早上都按时收到邮件

你需要满足一个其中一个条件

①必须保证你的计算机在你设置定时发送邮件的点时是开机的且运行着这个python程序。emm,所以说这有点不太现实,一般没有人会24小时开着计算机吧哈哈哈。

②.你拥有一台云服务器。云服务器是24小时不关机的,所以你就要把这个程序一直挂在云服务器上,程序到点了就会自动给你发送邮件啦~

下图是我之前挂在阿里云centos服务上的定时发送邮件的效果图~

OK~到这里就全部介绍完毕啦 ~希望对大家有所帮助!

四.往期文章回顾

【python热搜爬虫+定时发送邮件操作①】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

【爬虫+数据可视化】Yhen手把手带你爬取CSDN博客访问量数据并绘制成柱状图

【爬虫】Yhen手把手带你爬取去哪儿网热门旅游信息(并打包成旅游信息查询小工具

【爬虫】Yhen手把手带你用python爬小说网站,全网打尽,想看就看!(这可能会是你看过最详细的教程)

【实用小技巧】用python自动判断并删除目录下的空文件夹(超优雅)

【爬虫+数据库操作】Yhen手把手带你用pandas将爬取的股票信息存入数据库!

【selenium爬虫】
Yhen手把手带你用selenium自动化爬虫爬取海贼王动漫图片

【爬虫】秀才不出门,天下事尽知。你也能做到!Yhen手把手带你打造每日新闻资讯速达小工具。

【爬虫】Yhen手把手带你用python爬取知乎大佬热门文章

【爬虫】Yhen手把手教你爬取表情包,让你成为斗图界最靓的仔

【前端】学过一天的HTML+CSS后,能做出什么有趣的项目?

【python微博爬虫+定时发送邮件操作②】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?相关推荐

  1. 【python热搜爬虫+定时发送邮件操作①】不会吧不会吧!不会2020了还有人需要用软件看微博热搜吧?

    以下内容为本人原创,欢迎大家观看学习,禁止用于商业用途,转载请说明出处,谢谢合作! ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/art ...

  2. 微博热搜出了新的功能模块,看什么热搜你说了算

    微博一直是我们玩得比较长远的一个社交工具,超过10年的一个产品,一直做得不错,也是一直在改进,最近微博私信给我说邀请参与微博热搜定制功能,大致的看了下,感觉还是不错的. 引用微博热搜榜私信内容:热搜定 ...

  3. python爬虫写入数据库_Python爬虫数据写入操作

    Python Scrapy爬虫数据写入操作 在我们写完一个爬虫项目,得到了一大堆的数据,为了以后的分析和使用,我们需要把我们得到的数据进行保存.保存数据的方式主要有:保存到数据库,保存到CSV文件,保 ...

  4. python爬取 过去的微博热搜(热搜神器)

    python爬取热搜神器(可以查找关键字热搜or过去的热搜) hello,因为老师给了任务,希望我们爬取一些微博上的数据,所以就想到了要爬取热搜,再根据热搜爬取评论.因为微博对过往的热搜不能根据时间进 ...

  5. Python爬取微博热搜并定时发送邮件,及时了解最新动态!

    一.前言 微博热搜榜每天都会更新一些新鲜事,但是自己处于各种原因,肯定不能时刻关注着微博,为了与时代接轨,接受最新资讯,就寻思着用Python写个定时爬取微博热搜的并且发送QQ邮件的程序,这样每天可以 ...

  6. python爬虫 知乎热榜、微博热搜并发送邮件至邮箱

    目录 爬取知乎热榜.微博热搜并发送邮件至邮箱 1.获取网页 1.1获取url 1.2构造headers 1.3代码 2.提取信息 2.1 XPath规则 2.2 定位到节点 2.3 提取标题和url ...

  7. 利用 Python 自动抓取微博热搜,并定时发送至邮箱

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 夜阑卧听风吹雨,铁马冰河入梦来. ...

  8. 技巧 | python定时发送邮件(自动添加附件)

    文章目录 1. 邮箱设置 1.1 设置 1.2 获取POP3/SMTP服务授权码 2. 发送邮件 2.1 导入email/smtplib相关模块 2.2 email模块 2.2.1 邮箱设置 2.2. ...

  9. 「Python爬虫系列讲解」十一、基于登录分析的 Selenium 微博爬虫

    本专栏是以杨秀璋老师爬虫著作<Python网络数据爬取及分析「从入门到精通」>为主线.个人学习理解为主要内容,以学习笔记形式编写的. 本专栏不光是自己的一个学习分享,也希望能给您普及一些关 ...

最新文章

  1. VC++ 字符串操作学习总结
  2. IDEA修改Servlet的代码生成模板
  3. 【猪哥】Python爬虫入门系列
  4. javaweb学习总结(四十三)——Filter高级开发
  5. html语言制作网页,HTML语言的网页制作技巧与方法
  6. 游戏网页设计:拟物还是扁平?
  7. 云开发新能力,支持 HTTP 调用 API
  8. LeetCode 1599. 经营摩天轮的最大利润(模拟)
  9. 使用nginx为ArcGIS Server做反向代理
  10. mapxtreme java manger web 应用程序牛刀小试
  11. 安卓端华为推送集成笔记
  12. 从大整数乘法的实现到 Karatsuba 快速算法
  13. C#:抽象类和抽象函数, 密封类和密封方法(抄录自LilianChen)
  14. matlab 显示图像 去掉边框,Matlab显示图像时去除灰色边框
  15. 没能躲开的云服务容器网络问题
  16. Python量化数据获取:总资产同比增长率与净资产同比增长率
  17. javaSwing的JTextField自动补全
  18. HTML模拟电池页面,Html 电池图标
  19. 谷仓(某校老师原创题)
  20. 考研英语大纲单词E~O与常用短语

热门文章

  1. GWO灰狼优化算法以及Matlab代码
  2. 动态切换主题(皮肤skin)
  3. hellxman最新突破36O的启动思路
  4. MyBatis原理总结
  5. 网络大学计算机统考试题,计算机应用基础网络教育统考试题库(2018年真题)...
  6. jq判断复选框是否被选中及选中复选框
  7. 设计模式:装饰模式 c++实现
  8. spring boot 登录滑动验证
  9. iOS高薪求职面试题技巧分享
  10. ANR常见场景分析策略