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

2023-11-25 22:20

本文主要是介绍每天定时给你的女朋友发送睡前小故事其一,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这是一个爬取故事,每天定时发送的案例,发送给谁呢?可以发送给自己的女朋友,什么?不可能有女朋友?那就好好练习一下代码,学会之后说不准哪天就用到了,不对吗?

代码主要分成两部分,第一部分是爬取故事网站,然后把故事的连接保存到文件中。代码部分如下

    def request_html(self,url,title_url):response = requests.get(url=url,headers=self.headers).content.decode('utf-8')tree = etree.HTML(response)title = tree.xpath('.//div[@id="Mhead2_0"]//dd//a/text()')href = tree.xpath('.//div[@id="Mhead2_0"]//dd//a/@href')href = ["http://www.tom61.com"+hre for hre in href]for t,h in zip(title,href):dict_story = {}dict_story[t] = htitle_url.append(dict_story)print(title_url)# json_str = json.dumps(title_url,ensure_ascii=False)with open('故事.json','w',encoding='utf-8') as f:json.dump(title_url,f,ensure_ascii=False)#爬取小故事def crawlStory(self,endpage):title_url = []url = 'http://www.tom61.com/ertongwenxue/shuiqiangushi/index.html'self.request_html(url,title_url)for i in range(2, endpage):url = 'http://www.tom61.com/ertongwenxue/shuiqiangushi/index_%s.html' % (i)self.request_html(url,title_url)

第二部分则是获取url,然后解析,把故事发送到她的邮箱中的代码,代码如下

    #发送小故事到邮箱当中def sendStory(self):with open(r'F:\reptile\第二周\第五天\故事.json', 'r', encoding='utf-8') as f:content = f.read()story = json.loads(content)story_url = random.choice(story)for k, v in story_url.items():name = kurl = vresponse = requests.get(url=url, headers=self.headers).content.decode('utf-8')tree = etree.HTML(response)content_list = tree.xpath('.//div[@class="t_news_txt"]//text()')content = "\n".join(content_list)print(content)self.sendemail(name,content,'66666666@qq.com')# 发送邮箱的函数def sendemail(self,subject,content,recver):subject = subject  # 邮件主题content = content  # 邮件内容sender = "88888888@qq.com"  # 发送者的邮箱recver = recver  # 接收者的邮箱,可以是一个也可以是多个,多个的话要使用recver.split(",\n")转换格式password = "xxxxxxxxxxxxxx"  # 授权码部分message = MIMEText(content, "plain", "utf-8")  # 设置格式,加入邮件内容message["Subject"] = subjectmessage["To"] = recvermessage["From"] = sendertry:smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 使用的服务器和端口,可以是qq的也可以是163的smtp.login(sender, password)  # 登录邮箱smtp.sendmail(sender, recver.split(",\n"), message.as_string())  # 发送邮件smtp.close()  # 关闭服务器print('发送成功')except:print('出现异常')

完整的代码如下

import requests
from fake_useragent import UserAgent
from lxml import etree
import json
import smtplib  # 登陆邮件服务器,进行邮件发送
from email.mime.text import MIMEText  # 负责构建邮件格式
import randomclass Story():def __init__(self):self.ua = UserAgent()self.useragent = self.ua.randomself.headers = {'User-Agent': self.useragent}#爬取保存小故事到文件中def request_html(self,url,title_url):response = requests.get(url=url,headers=self.headers).content.decode('utf-8')tree = etree.HTML(response)title = tree.xpath('.//div[@id="Mhead2_0"]//dd//a/text()')href = tree.xpath('.//div[@id="Mhead2_0"]//dd//a/@href')href = ["http://www.tom61.com"+hre for hre in href]for t,h in zip(title,href):dict_story = {}dict_story[t] = htitle_url.append(dict_story)print(title_url)# json_str = json.dumps(title_url,ensure_ascii=False)with open('故事.json','w',encoding='utf-8') as f:json.dump(title_url,f,ensure_ascii=False)#爬取小故事def crawlStory(self,endpage):title_url = []url = 'http://www.tom61.com/ertongwenxue/shuiqiangushi/index.html'self.request_html(url,title_url)for i in range(2, endpage):url = 'http://www.tom61.com/ertongwenxue/shuiqiangushi/index_%s.html' % (i)self.request_html(url,title_url)#发送小故事到邮箱当中def sendStory(self):with open(r'F:\reptile\第二周\第五天\故事.json', 'r', encoding='utf-8') as f:content = f.read()story = json.loads(content)story_url = random.choice(story)for k, v in story_url.items():name = kurl = vresponse = requests.get(url=url, headers=self.headers).content.decode('utf-8')tree = etree.HTML(response)content_list = tree.xpath('.//div[@class="t_news_txt"]//text()')content = "\n".join(content_list)print(content)self.sendemail(name,content,'66666666@qq.com')# 发送邮箱的函数def sendemail(self,subject,content,recver):subject = subject  # 邮件主题content = content  # 邮件内容sender = "88888888@qq.com"  # 发送者的邮箱recver = recver  # 接收者的邮箱,可以是一个也可以是多个,多个的话要使用recver.split(",\n")转换格式password = "xxxxxxxxxxxxxx"  # 授权码部分message = MIMEText(content, "plain", "utf-8")  # 设置格式,加入邮件内容message["Subject"] = subjectmessage["To"] = recvermessage["From"] = sendertry:smtp = smtplib.SMTP_SSL("smtp.qq.com", 465)  # 使用的服务器和端口,可以是qq的也可以是163的smtp.login(sender, password)  # 登录邮箱smtp.sendmail(sender, recver.split(",\n"), message.as_string())  # 发送邮件smtp.close()  # 关闭服务器print('发送成功')except:print('出现异常')if __name__ == '__main__':story = Story()# story.crawlStory(3)story.sendStory()

 

这篇关于每天定时给你的女朋友发送睡前小故事其一的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Java中Springboot集成Kafka实现消息发送和接收功能

《Java中Springboot集成Kafka实现消息发送和接收功能》Kafka是一个高吞吐量的分布式发布-订阅消息系统,主要用于处理大规模数据流,它由生产者、消费者、主题、分区和代理等组件构成,Ka... 目录一、Kafka 简介二、Kafka 功能三、POM依赖四、配置文件五、生产者六、消费者一、Kaf

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Python手搓邮件发送客户端

《Python手搓邮件发送客户端》这篇文章主要为大家详细介绍了如何使用Python手搓邮件发送客户端,支持发送邮件,附件,定时发送以及个性化邮件正文,感兴趣的可以了解下... 目录1. 简介2.主要功能2.1.邮件发送功能2.2.个性签名功能2.3.定时发送功能2. 4.附件管理2.5.配置加载功能2.6.

解决Cron定时任务中Pytest脚本无法发送邮件的问题

《解决Cron定时任务中Pytest脚本无法发送邮件的问题》文章探讨解决在Cron定时任务中运行Pytest脚本时邮件发送失败的问题,先优化环境变量,再检查Pytest邮件配置,接着配置文件确保SMT... 目录引言1. 环境变量优化:确保Cron任务可以正确执行解决方案:1.1. 创建一个脚本1.2. 修

如何使用celery进行异步处理和定时任务(django)

《如何使用celery进行异步处理和定时任务(django)》文章介绍了Celery的基本概念、安装方法、如何使用Celery进行异步任务处理以及如何设置定时任务,通过Celery,可以在Web应用中... 目录一、celery的作用二、安装celery三、使用celery 异步执行任务四、使用celery

什么是cron? Linux系统下Cron定时任务使用指南

《什么是cron?Linux系统下Cron定时任务使用指南》在日常的Linux系统管理和维护中,定时执行任务是非常常见的需求,你可能需要每天执行备份任务、清理系统日志或运行特定的脚本,而不想每天... 在管理 linux 服务器的过程中,总有一些任务需要我们定期或重复执行。就比如备份任务,通常会选在服务器资

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

豆包 MarsCode 不允许你还没有女朋友

在这个喧嚣的世界里,爱意需要被温柔地唤醒。为心爱的她制作每日一句小工具,就像是一场永不落幕的浪漫仪式,每天都在她的心田播撒爱的种子,让她的每一天都充满甜蜜与期待。 背景 在这个瞬息万变的时代,我们都在寻找那些能让我们慢下来,感受生活美好的瞬间。为了让这份浪漫持久而深刻,我们决定为女朋友定制一个每日一句小工具。这个工具会在她意想不到的时刻,为她呈现一句充满爱意的话语,让她的每一天都充满惊喜和感动

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消