用Python自动推送睡前小故事给你爱的人

Posted 梦子mengy7762

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用Python自动推送睡前小故事给你爱的人相关的知识,希望对你有一定的参考价值。

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

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

一共有700则小故事,嗯,一天一则数量可以满足,html格式也比较统一,就决定是它了!另外注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心

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

发现其故事链接包含在dl标签中的a标签中的href属性,接下来要做的就是提取出该链接:

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

代码实现:

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

简单地使用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'))

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

查看网页源代码

故事

重新对该网页进行页面解析,提取出所有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'] = subject    
msg['From'] = msg_from    
msg['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,正文内容为爬取的小故事

实现定时发送功能

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

系统

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

故事

后来我还找到了一个英文故事网站,用同样的思路完成爬取—推送的操作。你可以选择一天推送中文故事,一天推送英文故事,岂不妙哉?另外注意:不管你是为了Python就业还是兴趣爱好,记住:项目开发经验永远是核心

以上是关于用Python自动推送睡前小故事给你爱的人的主要内容,如果未能解决你的问题,请参考以下文章

Python自动化撩妹合集微信聊天机器人,推送天气早报睡前故事精美图片分享

第52篇外教讲睡前故事附知识点:The Raft Race

如何让你爱的人也爱上你?

markdown “如何让你爱的人爱上你”.MD

520NFT打新开启 比你爱的人更懂你

《如何让你爱的人爱上你》-读书笔记