用Python写个爬虫小程序,给女朋友每日定时推送睡前小故事
共 2637字,需浏览 6分钟
·
2020-08-16 02:08
导读:这篇文章利用简单的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_encoding
return r.text
except:
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)
5. 将爬取的小故事发送到邮箱
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,正文内容为爬取的小故事。
6. 实现定时发送功能
在Windows的环境中,在cmd中输入compmgmt.msc
,将该脚本文件加入任务计划程序库,设置运行时间和频率。
这样就能实现每晚九点定时发送睡前小故事啦!
后来我还找到了一个英文故事网站,用同样的思路完成爬取—推送的操作。你可以选择一天推送中文故事,一天推送英文故事,岂不妙哉。
当然本文只是提供一个想法,你可以基于这个思路实现更多有意思的案例,本文的源码可以在后台回复「故事」获取!
今天推荐一本爬虫书Python 3.x网络爬虫从零基础到项目实战(10大核心技术+1个高级框架+32个经典实例,还原爬虫开发中的每一步细节,教你轻松学会Python爬虫开发及高级技术)点击下方图片可以直达购买页面查看详情与购买(现在京东和当当都有优惠)
送书规则很简单,点击下方小程序给我留言,内容可以是你用爬虫实现过的有趣案例(想法也行),也可以是你和爬虫的故事或对于爬虫的看法,我将挑选三位用心留言各送出一本!