首页 > 编程语言 >每次记歌词——使用Python自动发邮件提醒你记歌词

每次记歌词——使用Python自动发邮件提醒你记歌词

时间:2023-04-23 14:37:36浏览次数:52  
标签:发邮件 Python text 歌词 list music 邮箱 import


八骏日行三万里,穆王何事不重来。

大家好,我是Python进阶者。

前言

前几天在Python交流群里边,【冫马讠成】大佬分享了一个有趣的代码,用于定时发送歌词到邮箱,觉得挺有意思,这里拿出来给大家分享。

每次记歌词——使用Python自动发邮件提醒你记歌词_python


实现思路

实现思路倒是不难,其一是Python网络爬虫,将网页上的歌词信息抓取到,然后存起来到一个变量中,其二是编写发送邮件的逻辑,编辑好邮寄模板,然后将抓到的内容发送出去即可,定时任务可以使用Windows自带的任务计划程序实现。

实现过程

这里直接上代码,如下所示:

import json, random
import requests
import parsel
import smtplib
import schedule
import time
from bs4 import BeautifulSoup
from email.mime.text import MIMEText
from email.header import Header

# account = input('请输入你的邮箱:')
# password = input('请输入邮箱授权码:')
# receiver = input('请输入收件人的邮箱:')
account = '{0}'.format('请输入你的邮箱:')
password = '{0}'.format('请输入邮箱授权码:')
receiver = '{0}'.format('请输入收件人的邮箱:')


def recipe_spider():
    headers = {
        'Cookie': 'kw_token=6A3S4588YMS',
        'csrf': '6A3S4588YMS'
    }
    url = 'http://www.kuwo.cn/api/www/bang/bang/musicList?bangId=93&pn=1&rn=30'
    resp = requests.get(url, headers=headers)
    text = resp.text
    text_dict = json.loads(text)
    musicList = text_dict['data']['musicList']
    music_list = []
    dit = {}
    for music in musicList:
        # rid
        dit['musicrid'] = music['musicrid'].split('_')[1]
        dit['name'] = music['name']
        music_list.append(dit.copy())
    # print(music_list)
    list_num=[]
    for i in range(30):
        music_num = music_list[i]['musicrid']
        list_num.append(music_num)
    # print(list_num)
    a = random.choice(list_num)

    url1 = str('http://www.kuwo.cn/play_detail/'+a)

    html_data = requests.get(url = url1).text    # <Response [200]> 数据请求成功

    sel = parsel.Selector(html_data)  # <Selector xpath=None data='<html data-n-head-ssr>\n  <head>\n    <...'>

    name = sel.xpath('//*[@class="song_name flex_c"]/span/text()').get().strip()  # 歌名

    lyric = sel.xpath('//*[@id="lyric"]/div/p/text()').getall()

    lyric1 = '\n'.join(lyric)
    return lyric1


def send_email(lyric1):
    global account,password,receiver
    mailhost = 'smtp.qq.com'
    qqmail = smtplib.SMTP_SSL(mailhost,465)
    # qqmail.connect(mailhost,465)
    qqmail.login(account,password)
    content = '亲爱的,今天歌名是:'+lyric1
    message = MIMEText(content, 'plain', 'utf-8')
    subject = '今天听什么(附歌词)'
    message['Subject'] = Header(subject, 'utf-8')
    try:
        qqmail.sendmail(account, receiver, message.as_string())
        print('邮件发送成功')
    except:
        print('邮件发送失败')
    qqmail.quit()


def job():
    print('开始一次任务')
    lyric1 = recipe_spider()
    send_email(lyric1)
    print('任务完成')


if __name__ == '__main__':
    job()

你只需要输入你的邮箱,邮箱授权码和对应的收件人即可。如果不知道邮箱授权码怎么配置的话,请参考这篇文章,有详细的配置过程,这里不再赘述。

代码运行之后,用户就可以收到你发送的邮件了,如下所示。


每次记歌词——使用Python自动发邮件提醒你记歌词_人工智能_02

你也可以定时给自己发,使用定时任务工具,做个定时任务,每天提醒自己,看看歌词啥的,看的歌词多了,这样在歌词大赛中也许能拿个好名次呢!

针对定时任务,也可以在windows本地中的任务计划程序工具栏添加定时任务,如下图所示:依次点击【电脑】-->【管理】-->【创建定时任务】-->【创建新任务】


每次记歌词——使用Python自动发邮件提醒你记歌词_数据分析_03

根据提示选择需要定时的时间和任务程序即可,教程网上大把,这里不再赘述。

总结

大家好,我是Python进阶者。这篇文章主要基于Python网络爬虫和Python自动化办公中的邮件发送知识,实现歌词自动发送邮件的小项目。


标签:发邮件,Python,text,歌词,list,music,邮箱,import
From: https://blog.51cto.com/u_13389043/6217574

相关文章

  • 盘点4种方法用Python批量提取[]括号内的第一个元素
    今日鸡汤葡萄美酒夜光杯,欲饮琵琶马上催。大家好,我是Python进阶者。前言前几天在才哥交流群里边遇到一个叫【上海-数据分析-小粒】的粉丝提了一个小问题,如下:数据如下:咋一看,这个题目倒是也确实不太难,群里提供思路的人也很多,一起来看看吧!思路和实现方法针对这个问题,群里的小伙伴纷纷......
  • 厉害了,Python也能使用动态链接库
    今日鸡汤未谙姑食性,先遣小姑尝。大家好,我是Python进阶者。前言动态链接库(DLL)想必大家都不陌生了吧,C/C++编程经常会用到,那么,它跟我们的Python有什么关系?要说关系恐怕也就是Python是用C写的了,不过,还有一点更重要的关系,那就是Python可以调用C函数,这一点,在Pywin32中有所体现。下面我......
  • Python能不能只选择合并一个excel当中指定的sheet 当中指定的列呢?
    春风桃李花开日,秋雨梧桐叶落时。大家好,我是皮皮。一、前言前几天在Python钻石交流群【不争】问了一个Python自动化办公的基础问题,这里拿出来给大家分享下。二、实现过程这里【瑜亮老师】、【狂吃山楂片】、【一级大头虾选手】给了一个解决思路,如下图所示:方法有很多。【瑜亮老师】......
  • Python正则怎么匹配\啊?
    玉容寂寞泪阑干,梨花一枝春带雨。大家好,我是皮皮。一、前言前几天在Python白银交流群【膨胀西瓜汁】问了一个Python正则表达式的问题,这里拿出来给大家分享下。下面是匹配的结果:二、实现过程这里【论草莓如何成为冻干莓】给了一个思路,在前面加个r,防止转义。后来发现\5不是反斜杠。......
  • 盘点几道Python面试题【ChatGPT作答】
    风吹仙袂飘飖举,犹似霓裳羽衣舞。大家好,我是皮皮。一、前言前几天在Python白银交流群看到了几道Python基础题目,这里拿出来给大家分享下,感兴趣的小伙伴可以学习学习。1、字典、元组、列表、集合的区别是什么?2、什么是装饰器,怎么用?3、为什么要有闭包?4、什么是订阅发布模式,写一个demo5......
  • Python生成requirements.txt方法
    Python生成requirements.txt方法 requirements.txt可以通过pip命令自动生成和安装,这种情况更适用于此项目是单独的虚拟python环境,生成requirements.txt文件。安装requirements.txt依赖:pipinstall-rrequirements.txt1.方法1:生成requirements.txt文件pipfreeze>re......
  • 浅析python中装饰器原理
    一、什么叫装饰器?装饰器(decorator)的本质是一个函数,它接收一个函数作为参数,并返回一个被装饰过后的函数二、装饰器的作用?在不修改被修饰过函数的代码和和调用方式的情况下,给被装饰函数增加额外的功能三、装饰器的应用场景?插入日志、性能测试、事务处理、缓存、权限校验等场景......
  • Python_9 py文件导入和路径处理
    一、查缺补漏Python中两个值交换可以直接交换如:a,b=b,a冒泡就是从小到大排序,因为越到后越大自动导包也适用于自己创建的模块关于正斜杠和反斜杠https://www.cnblogs.com/yangjian319/p/4801675.html 5. 内置异常汇总https://www.cnblogs.com/nmb-musen/p/108......
  • Python之多进程与多线程
     1.1线程frommultiprocessingimportProcessdefshow(name):print("Processnameis"+name)if__name__=="__main__":proc=Process(target=show,args=('subprocess',))proc.start()proc.join()......
  • python 操作阿里云oss 对象存储上传下载文件
    python操作阿里云对象存储oss阿里云账号要有操作oss权限安装OSSSDKpipinstalloss2上传文件#-*-coding:utf-8-*-importoss2importos#阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控......