给女友定时发送睡前小故事

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

http://www.tom61.com/ertongwenxue/shuiqiangushi/

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

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

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

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

http://www.tom61.com/ertongwenxue/shuiqiangushi/2018-02-25/106432.html,接下来要做的就是提取出该链接:

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

代码实现:


 
 
  1. def getHTMLText(url,headers):
  2. try:
  3. r=requests.get(url,headers=headers,timeout= 30)
  4. r.raise_for_status()
  5. r.encoding=r.apparent_encoding
  6. #print(r.text)
  7. return r.text
  8. except:
  9. return "爬取失败"

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

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


 
 
  1. def parsehtml(namelist,urllist,html):
  2. url= 'http://www.tom61.com/'
  3. soup=BeautifulSoup(html, 'html.parser')
  4. t=soup.find( 'dl',attrs={ 'class': 'txt_box'})
  5. #print(t)
  6. i=t.find_all( 'a')
  7. #print(i)
  8. for link in i:
  9. urllist.append(url+link.get( 'href'))
  10. namelist.append(link.get( 'title'))

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

查看网页源代码

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

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


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

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


 
 
  1. def sendemail(url,headers):
  2. msg_from= '870407139@qq.com' #发送方邮箱
  3. passwd= '' #填入发送方邮箱的授权码
  4. receivers=[ ' , '] #收件人邮箱
  5. subject= '今日份的睡前小故事' #主题
  6. html=getHTMLText(url,headers)
  7. content=parsehtml2(html) #正文
  8. msg = MIMEText(content)
  9. msg[ 'Subject'] = subject
  10. msg[ 'From'] = msg_from
  11. msg[ 'To'] = ','.join(receivers)
  12. try:
  13. s=smtplib.SMTP_SSL( "smtp.qq.com", 465) #邮件服务器及端口号
  14. s.login(msg_from, passwd)
  15. s.sendmail(msg_from, msg[ 'To'].split( ','), msg.as_string())
  16. print( "发送成功")
  17. except:
  18. print( "发送失败")
  19. finally:
  20. s.quit()

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

实现定时发送功能

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

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

 

完整代码戳:https://github.com/librauee/

 

 

 

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值