梦一场小叶同学歌词的真正含义,梦一场歌词含义是什么意思

首页 > 生活 > 作者:YD1662024-05-19 11:08:10

并且在Request Headers的cookie键中能够找到csrf_token的取值,如下图中的红框所示:

梦一场小叶同学歌词的真正含义,梦一场歌词含义是什么意思(5)

与代码实际获取的稍有出路:

这是代码获取到的:

<RequestsCookieJar[<Cookie MUSIC_U=8e504c23c925ac6b1a9f8570bd5ea25899dcb9d14e06692fe82562bbf8998e10db7e765df03701e5d88f396e7092517fd69973145faab799d78b6050a17a35e7a47070bb71cca15c2d96587bb7c51858 for .music.163.com/>, <Cookie NMTID=00OfaG13kwU00MTt0ZEkt1FAzgBBlEAAAF-Bs4AAA for .music.163.com/>, <Cookie __csrf=13b3d714dab6aefe645de1f994416da6 for .music.163.com/>, <Cookie __remember_me=true for .music.163.com/>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/api/clientlog>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/api/clientlog>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/api/feedback>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/api/feedback>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/eapi/clientlog>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/eapi/clientlog>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/eapi/feedback>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/eapi/feedback>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/neapi/clientlog>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/neapi/clientlog>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/neapi/feedback>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/neapi/feedback>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/openapi/clientlog>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/openapi/clientlog>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/wapi/clientlog>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/wapi/clientlog>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/wapi/feedback>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/wapi/feedback>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/weapi/clientlog>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/weapi/clientlog>, <Cookie MUSIC_A_T=1446513182120 for .music.163.com/weapi/feedback>, <Cookie MUSIC_R_T=1446513246949 for .music.163.com/weapi/feedback>]>

以代码为准,使用正则提取:

re.findall('__csrf=(.*?) for', str(self.session.cookies))[0]

6 user-agent

也是在Request Headers部分中,可以获取到:

梦一场小叶同学歌词的真正含义,梦一场歌词含义是什么意思(6)

下面进入到代码开发部分

环境安装

定时、自动爬取网易今日推荐歌单,并自动发送邮件。

内置模块,如下:

import time import re import smtplib from email import header from email.mime import text, multipart from threading import Timer

其中,time和re模块都很常见。后面三行smtplib和email都与自动发邮件相关。

下面这几个包是重点,其中第一个包是公众号朋友皮卡丘编写,用于模拟自动登入常见各大平台,用起来很方便。

第二个包也是皮卡丘编写,用于自动爬取网易云音乐。我看了其中的主要模块,编写的很不错。

第三个包是用来写命令行接口,很方便。

from DecryptLogin import login from DecryptLogin.core.music163 import Cracker import click 项目框架

首先,看下项目文件,主要包括以下两个:

p3_email_song.py

song_email.txt

其中,py为代码模块,txt为py模块需要读入的邮箱列表,表示爬取后自动发给这些邮箱。

下面,看下py模块的主要类和函数。

如上提到的,全局变量headers字典是post请求的头,从浏览器里复制过来:

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36', 'Accept': '*/*' }

接下来,全局变量send_email_interval是定时自动发送邮件的时间间隔,设置为一天,意思是每一天定时发送:

send_email_interval = 60*60*24

主要包括一个类:NetRcmndSong,用于自动爬取网易云音乐的推荐歌单,cmd函数是使用click模块装饰的命令行接口:

梦一场小叶同学歌词的真正含义,梦一场歌词含义是什么意思(7)

NetRcmndSong类

主方法是run:

def run(self): recommend_info = self.__get_recommend() keys, values = list(recommend_info.keys()), list(recommend_info.values()) self.title = f'【程序员zhenguo】和网易云音乐今日为你({self.username})推荐的歌曲如下:' options = [v for v in values] self.email_content = self.title "\n" '\n'.join(options) "\n\n\t来自你的老朋友\n\t程序员zhenguo" print(self.email_content) self.__send_email()

self.__get_recommend()用于爬取歌单数据,后面解析成邮件发送的格式,这是我今天爬取的推荐歌单,一共74首,下面是前20首歌:

【程序员zhenguo】和网易云音乐今日为你(guozhennianhua@163.com)推荐的歌曲如下: 0 梦一场-小叶同学 1 Something Just Like This-We Rabbitz 2 侧脸-于果 3 我们的时光-赵雷 4 余生浮梁-侃侃 5 第三极-十月时Sunset 6 无感-王朝 7 逆流时光-安图声乐队 8 多幸运遇见你-李乐乐 9 夢に向かって-中村由利子 10 直到遇见了你,我只喜欢你-陈柯宇 11 万万里-史超 12 Forrest Gump-David Metis 13 董小姐(小调版)-张超洋 14 Sứ Thanh Hoa(Remix)-SHENMING 15 一生中最爱 (Live)-李克勤 16 Tojana-Willyam Wiay 17 一言难尽-张宇 18 你-刘健宗 19 求佛南方凯-白风流 20 我曾-杨骑瑞 来自你的老朋友 程序员zhenguo

__get_recommend是整个项目的核心,通过文章一开始的讲解,我们知道API是下面的url:

def __get_recommend(self): """ 获得每日歌曲推荐 :return: """ url = 'http://music.163.com/weapi/v2/discovery/recommend/songs?csrf_token=' data = { 'crsf_token': self.csrf, 'limit': '999', 'offset': '0', 'total': 'true' } data = self.cracker.get(data) response = self.session.post(url, headers=self.headers, data=data) response_json = response.json()

你一定会好奇:data的结构为啥是这样,这是通过解析网易云前端的js代码得到的。

最重量级的、最核心的应该是下面这行代码:

self.cracker.get(data)

这里面都有源码,大家可以结合网易云前端的js代码,再学习RSA和AES的加密技术,相信理解没问题。

cmd方法

click模块封装命令行接口是真的方便,只需要使用下面三个装饰器:

@click.command() @click.option('-u', help='用户名') @click.option('-p', help='密码') def cmd(u, p): client = NetRcmndSong(u, p) client.run() Timer(send_email_interval, cmd).start()

另外,应为我们想每天定时自动发送,所以使用Timer做定时任务。只需要下面一行代码,还是有点巧妙,cmd函数必须包括下面这行代码,同时Timer的参数也必须叫cmd:

Timer(send_email_interval, cmd()).start() 测试

下面应用上面的模块,实现定时、自动爬取并发送邮件。

在song_email.txt文件中配置接收推荐音乐的邮箱,一行一个,可以给你女朋友、好朋友、家人的邮箱都写上。

然后在cmd或terminal窗口,只需输入下面一行代码:

python p3_email_song.py -u 你的网易云账户 -p 你的网易密码

这是我收到的邮件截图:

梦一场小叶同学歌词的真正含义,梦一场歌词含义是什么意思(8)

上一页123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.