作者 | 老肥

来源 | 老肥码码码

这篇文章是去年我在博客上写的一篇基础爬虫,利用了简单的Python爬虫、邮件发送以及定时任务实现了每天定时发送睡前小故事的功能,是一篇步骤详尽的文章。经过测试,该程序仍能正常运行。

最近,某可爱要求我忙完之后给她每晚睡前讲讲小故事,我想了下,网络上应该有各种资源,小故事也都能搜得到,但是数量比较少,而且格式不够统一,提取比较困难。转念一想,面向儿童的睡前故事可能也比较适用,于是我准备从儿童睡前故事中取材,搜索之后发现有一个适合提取睡前故事的网址:

tom61.com/ertongwenxue/

一共有700则小故事,嗯,一天一则数量可以满足,html格式也比较统一,就决定是它了!

查看网页源代码,ctrl+F输入查询关键字幸福王国,定位到相关信息:

发现其故事链接包含在dl标签中的a标签中的href属性,

/ertongwenxue/shuiqiangushi/2018-02-25/106432.html,点击后得到完整网址

tom61.com/ertongwenxue/,接下来要做的就是提取出该链接:

1、模拟浏览器访问网页,利用requests库请求访问

代码实现:

def getHTMLText(url,headers):try:r=requests.get(url,headers=headers,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:return "爬取失败"

2、简单地使用BeautifulSoup库,解析html页面。

找到dl标签的内容后在查找a标签中的内容,将提取的链接与原网页头进行拼接:

def parsehtml(namelist,urllist,html):url='http://www.tom61.com/'soup=BeautifulSoup(html,'html.parser')t=soup.find('dl',attrs={'class':'txt_box'})i=t.find_all('a')for link in i:urllist.append(url+link.get('href'))namelist.append(link.get('title'))

3、得到所有网页链接地址之后,访问该网页。

查看网页源代码:

4、重新对该网页进行页面解析,提取出所有p标签中的内容。

由于下面需要使用str类型的字符串,因此用.join方法将text列表用换行符进行分割:

def parsehtml2(html):text=[]soup=BeautifulSoup(html,'html.parser')t=soup.find('div',class_='t_news_txt')for i in t.findAll('p'):text.append(i.text)#print(text)return "\n".join(text)

将爬取的小故事发送到邮箱

def sendemail(url,headers):msg_from=''                                 #发送方邮箱passwd=''                                   #填入发送方邮箱的授权码receivers=[',']                             #收件人邮箱subject='今日份的睡前小故事'                                     #主题html=getHTMLText(url,headers)content=parsehtml2(html)                                        #正文msg = MIMEText(content)msg['Subject'] = subjectmsg['From'] = msg_frommsg['To'] = ','.join(receivers)try:s=smtplib.SMTP_SSL("smtp.qq.com",465)                   #邮件服务器及端口号s.login(msg_from, passwd)s.sendmail(msg_from, msg['To'].split(','), msg.as_string())print("发送成功")except:print("发送失败")finally:s.quit()

简单地利用smtp协议通过QQmail发送邮件给目标邮箱,端口号为465,正文内容为爬取的小故事

5、实现定时发送功能

在Windows的环境中,在cmd中输入compmgmt.msc,将该脚本文件加入任务计划程序库,设置运行时间和频率:

这样就能实现每晚九点定时发送睡前小故事啦!

后来我还找到了一个英文故事网站,用同样的思路完成爬取—推送的操作。你可以选择一天推送中文故事,一天推送英文故事,岂不妙哉?

代码传送门:https://github.com/librauee/Reptile/tree/master/story

防疫、复工如何并行?

天云数据推出人工智能监测方案!

到底如何做到事前预防,而不是事后诸葛亮?

本周四晚8点,天云数据VP陈勇为各位揭晓答案!扫描下方二维码免费报名~

热 文 推 荐

☞刚发布!美国今年要砸8.5亿美元布局AI,这两件事,程序员一定做准备了!

☞5 亿微博数据疑泄露,Python 爬虫如何避免踩天坑?

☞自称中本聪的他被法官怒怼:你的证词毫无可信度!

☞公有云关闭潮或显端倪,企业如何选择?

☞生产环境使用HBase,你必须知道的最佳实践

☞64% 的企业未实现智能化,5成公司算法工程师团队规模小于 10人,AI 工程师的机遇在哪里?

你点的每个“在看”,我都认真当成了喜欢

齁甜齁甜!用代码给女朋友每日定时推送睡前小故事相关推荐

  1. 用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事

    导读:这篇文章利用简单的Python爬虫.邮件发送以及定时任务实现了每天定时发送睡前小故事的功能,是一篇步骤详尽的文章. 最近,某可爱要求我忙完之后给她每晚睡前讲讲小故事,我想了下,网络上应该有各种资 ...

  2. python 提取网页正文_用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事...

    ↑ 关注 + 星标 ,每天学Python新技能后台回复[大礼包]送你Python自学大礼 导读:这篇文章利用简单的Python爬虫.邮件发送以及定时任务实现了每天定时发送睡前小故事的功能,是一篇步骤详 ...

  3. 给女朋友推送睡前小故事

    上一篇写了给女朋友推送天气的,但是未免太单调,来个推送睡前小故事 这次用的是这个网站http://www.tom61.com/ertongwenxue/shuiqiangushi/index_2.ht ...

  4. 每天定时给你的女朋友发送睡前小故事其二

    我们在文章<每天定时给你的女朋友发送睡前小故事其一>中说了如何爬取故事并且发送,并且已经达到目的了,那么我们如何在我们的windows上设置定时任务,每天按时的执行我们的代码呢?接下来听我 ...

  5. android每日定时推送通知,Android使用JobScheduler定期推送本地通知实例代码

    Android5.0之后提供了JobService和JobScheduler,用于在稍后的某个时间点或者当满足某个特定的条件时执行一个任务.使用JobScheduler,我们可以在用户一段时间没有使 ...

  6. java推送微信消息换行_5行代码实现微信小程序模版消息推送 (含推送后台和小程序源码)...

    我们在做小程序开发时,消息推送是不可避免的.今天就来教大家如何实现小程序消息推送的后台和前台开发.源码会在文章末尾贴出来. 其实我之前有写过一篇:<springboot实现微信消息推送,java ...

  7. 手把手教你给女朋友编写一个公众号定时推送(java版本)

    2022-08-15 开通微信云托管 在公众号推送的云服务器选择上,我选择的是微信云托管. 扫码登陆后,如果是第一次注册试用,没有环境,可以选择自己擅长的语言进行一键部署模板.此处我选择的是Sprin ...

  8. 抖音火爆的微信早安推送在线版,无需搭建代码,简单配置即可给心爱的他/她定时推送消息了

    抖音火爆的早安推送在线版,无需搭建代码,简单配置即可给心爱的他/她定时推送消息了 只需通过简单的配置,无需自己搭建代码环境,申请各种api,甚至保持电脑程序开机等.配置完成后,即可实现每天定时配送. ...

  9. python123空气质量提醒_用Python实现给女朋友定时推送消息

    释放双眼,带上耳机,听听看~! Python微信机器人定时推送消息给自己女朋友,可以选择在每天的5点20分为你的女朋友发送当日的天气,每日一句还有日历. 如果你有多个女朋友的话,还可以创建一个列表,之 ...

最新文章

  1. HDLBits 系列(36)Arbitration circuit implemented by FSM
  2. Node.js 0.8.21 稳定版发布
  3. linux openfire mysql_Openfire 服务器在Linux上的安装
  4. 基于倒谱法、自相关法、短时幅度差法的基音频率估计算法(MATLAB及验证)
  5. VTK:Qt之BarChartQt
  6. 转行AI成功的秘诀只有一个,那就是……
  7. 2.6. PostgreSQL表之间连接
  8. 开源硬件论坛,燃烧你的创造力
  9. vue 动态组件组件复用_真正的动态声明性组件
  10. last_kmsg和ram console
  11. 计算机控制lc72131,lc72131(1)
  12. 图解SQL的Join(转摘)
  13. errno是否是thread safe的
  14. matlab实时处理数据,Matlab下实现的实时数据采集和处理
  15. word for mac 输入拼音时出现方框
  16. php和ar的关系,vr与ar的区别
  17. Codeforces1457 C. Bouncing Ball(思维+dp)
  18. 路由器动态ip获取不到的处理办法
  19. 如何读书:实用性阅读指南
  20. 设备驱动中的kobject(kernel-4.7)

热门文章

  1. A*算法 puzzle8数码
  2. 【PMP】规划风险应对的工具
  3. openwrt 编译 出现dnsmasq 错误
  4. (转)七禾网 专访eToro:把投资变成一种社交,变成一种享受!
  5. Spring Cloud Alibaba系列博客汇总整理
  6. 同一台机器不同的sata线居然传输率不同
  7. 看了才知道!伊朗黑客组织原来这么牛
  8. 如何快速搭建一个简易的ELK日志分析系统
  9. AI_Papers周刊:第六期
  10. opencv学习笔记二十一:使用HSV颜色空间实现颜色识别