网络爬虫实战(一):给女友定时发送睡前小故事

2023-11-03 06:50

本文主要是介绍网络爬虫实战(一):给女友定时发送睡前小故事,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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

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库请求访问

代码实现:

def getHTMLText(url,headers):try:r=requests.get(url,headers=headers,timeout=30)r.raise_for_status()r.encoding=r.apparent_encoding#print(r.text)return r.textexcept: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'})#print(t)i=t.find_all('a')#print(i)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='870407139@qq.com'                                 #发送方邮箱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,正文内容为爬取的小故事

实现定时发送功能

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

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

 

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

 

更多爬虫学习,数据分析,机器学习及深度学习相关的代码实践可以关注公众号  算法与数据之美

algo_and_data

 

 

 

 

 

 

 

这篇关于网络爬虫实战(一):给女友定时发送睡前小故事的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/336351

相关文章

java实现延迟/超时/定时问题

《java实现延迟/超时/定时问题》:本文主要介绍java实现延迟/超时/定时问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java实现延迟/超时/定时java 每间隔5秒执行一次,一共执行5次然后结束scheduleAtFixedRate 和 schedu

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Linux系统配置NAT网络模式的详细步骤(附图文)

《Linux系统配置NAT网络模式的详细步骤(附图文)》本文详细指导如何在VMware环境下配置NAT网络模式,包括设置主机和虚拟机的IP地址、网关,以及针对Linux和Windows系统的具体步骤,... 目录一、配置NAT网络模式二、设置虚拟机交换机网关2.1 打开虚拟机2.2 管理员授权2.3 设置子

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Pandas使用SQLite3实战

《Pandas使用SQLite3实战》本文主要介绍了Pandas使用SQLite3实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录1 环境准备2 从 SQLite3VlfrWQzgt 读取数据到 DataFrame基础用法:读

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

SpringBoot使用OkHttp完成高效网络请求详解

《SpringBoot使用OkHttp完成高效网络请求详解》OkHttp是一个高效的HTTP客户端,支持同步和异步请求,且具备自动处理cookie、缓存和连接池等高级功能,下面我们来看看SpringB... 目录一、OkHttp 简介二、在 Spring Boot 中集成 OkHttp三、封装 OkHttp

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用