网站开发工程师面试问哪些问题南京做网站南京乐识赞

news/2025/9/22 20:16:07/文章来源:
网站开发工程师面试问哪些问题,南京做网站南京乐识赞,北京建站公司哪个好,英文外贸网站源码爬虫项目实战0x01 目标分析最近发现一个比较好的欧美音乐下载网站#xff0c;可以下载大部分高质量欧美音乐。该爬虫项目要实现自动化批量获取用户想要下载的音乐。本文从网站分析、爬虫设计、代码实现三个方面出发#xff0c;系统介绍该爬虫项目。项目完整代码在Github中可以… 爬虫项目实战0x01 目标分析最近发现一个比较好的欧美音乐下载网站可以下载大部分高质量欧美音乐。该爬虫项目要实现自动化批量获取用户想要下载的音乐。本文从网站分析、爬虫设计、代码实现三个方面出发系统介绍该爬虫项目。项目完整代码在Github中可以获得Github MusicDownload https://github.com/ctlyz123/MusicDownload0x1 音乐搜索界面在搜索页面输入想要音乐的名称就可以搜索到类似的音乐。分析搜索音乐的发送流程在chrome中F12查看数据包内容具体数据包内容如下q参数为查询参数向mp3quack.com发送请求Request URL: https://mp3quack.com/?qLoverRequest Method: GETStatus Code: 301 Remote Address: 127.0.0.1:1080Referrer Policy: no-referrer-when-downgrade与想象中不同的是回应包是个重定向包重定向网址是音乐的介绍网址内容如下location: https://lover.mp3quack.com/pragma: no-cacheserver: cloudflarestatus: 301taken-time: 2 ms0x2 音乐下载界面1 获取音乐编码每个音乐下载界面都是https://mp3pro.xyz/ 加一串字符该字符的获取在音乐介绍网址对应上节就是 https://lover.mp3quack.com/2 获取音乐token1在本网站要有音乐token2和音乐code编码两个东西才能定位和下载音乐但是token2的获取需要token1所以首先要找到token1获取token1的方法还是通过数据包中寻找发现下面数据包该数据包请求格式为Request URL: https://mp3pro.xyz/ajaxRequest Method: POSTStatus Code: 200 Remote Address: 127.0.0.1:1080Referrer Policy: no-referrer-when-downgradepurpose: audiotoken: cvUAzpn48xA:e70b1595e566ec841c9a11f920ac5b5b最终在https://mp3pro.xyz/cvUAzpn48xA 网页源码找到token内容有了token1就可以获取token2了通过https://mp3pro.xyz/ajax 处理的响应包为{status:true,cache:true,audio:cvUAzpn48xA:87bc4a8ef51006bd4d8a953e44c04caf}0x3 获取下载网址通过token2 发送 如下请求即可获取网址Request URL: https://mp3pro.xyz/ajaxRequest Method: POSTStatus Code: 200 Remote Address: 127.0.0.1:1080Referrer Policy: no-referrer-when-downgradepurpose: downloadtoken: cvUAzpn48xA:87bc4a8ef51006bd4d8a953e44c04caff: 0d: 0b: 320c: 1r: https://mp3pro.xyz/cvUAzpn48xA在上面的数据请求中需要获取音乐编码和音乐token2我们现在都以具备看一下响应包{status:true,mp3url:http:\/\/nl04.mp3pro.xyz\/7cb1bf3c5a39d7223b3d0\/Taylor%20Swift%20-%20Lover.mp3}响应包中的mp3url就是音乐的下载链接0x02 流程设计有了上述的简单分析我们初步可以实现单个音乐的下载本节设计代码结构利用一些设计方法和思想把大概框架梳理一下。0x1 模块梳理按照功能划分模块本文想要实现的是一个多线程大批音乐链接获取和下载功能。音乐下载链接生成模块音乐下载模块多线程模块综合管理控制模块为了方便后期扩展在各个模块之间采用的依赖关系相互关系如下在main.py中向controller模块传递一个模块类和两个模块对象实现模块的整合。整合代码和模块内容在代码实现中讲解。0x2 配置文件为方便配置将配置以json的格式存储利用Utils模块进行配置文件加载 配置文件格式如下{ Url: { Main_url: https://mp3quack.com, Mid_url: https://mp3pro.xyz }, Dir: { Save_Path: Music }, File:{ MusicList: Config/MusicList}}相关加载代码def loadconfig(filename): import json json_data {} with open(filename) as f: json_data json.load(f) return json_data0x03 代码实现分模块进行介绍主要包含链接生成模块多线程模块下载模块综合管理模块在这之前先看下主函数整合逻辑0x1 main.py# -----------------load config-------------------- configpath Config/config.json configs loadconfig(configpath)//加载配置文件 dir_config configs[Dir] file_config configs[File]# -----------------create classes-------------- builder Builder(configpath) downloader Downloader(dir_config[Save_Path]) controller Controller(file_config[MusicList])# ----------------auto download---------------- controller controller.init(downloader,builder,ThreadDownload) controller.AutoDownload() 代码比较简洁分为三个步骤 加载配置文件、创建类和对象、生成链接下载器0x2 链接生成模块主要分为四个步骤 获取音乐码、获取token1、获取token2、获取链接1.获取音乐码search_url %s/?q%s%(self.urlconfig[Main_url],quote(music_name))content requests.get(search_url).contentMusic_code re.findall(vi\/(.*)\/maxresdefault\.jpg,str(content))[0]获取配置文件中Main_url字段访问查询页面利用正则匹配找到对应的音乐code2.获取token1mid_url %s/%s%(self.urlconfig[Mid_url],Music_code)content requests.get(mid_url).contentm_token re.findall(token:(.*),verify,str(content))[0]访问配置文件中Mid_url链接将获取的music code加到链接里面通过正则寻找token位置和内容。3.获取token2data { purpose: audio, token: m_token,}req requests.post(https://mp3pro.xyz/ajax,datadata)res_json json.loads(bytes.decode(req.content))code_token res_json[audio]带着token1访问ajax接口利用json格式解析返回的内容取出audio字段。该字段中存储着token2的值。4.获取链接data { purpose:download, token:code_token, f:0, d:0, b:320, c:1, r:https://mp3pro.xyz/{}.format(code_token.split(:)[0]) }req requests.post(https://mp3pro.xyz/ajax, datadata)res_json json.loads(bytes.decode(req.content))//json解析response再次利用ajax请求将post数据设置为上述格式就可以获取到下载链接了效果图如下0x3 多线程模块 def __init__(self,builder,downloader,MusicName): self.builder builder self.downloader downloader self.MusicName MusicName def run(self): Musicurl self.builder.create(self.MusicName) print(self.MusicName.strip(),:,Musicurl) # self.downloader.download(Musicurl,self.MusicName)//下载音乐利用依赖的方式调用各个模块注释的一行可以从链接中下载音乐内容。0x4 下载模块req requests.get(url,streamTrue)//采用流模式with open(os.path.join(Music,MusicName.mp3), wb) as f: for chunk in req.iter_content(chunk_size512): if chunk: f.write(chunk)采用requests数据流模式分块下载数据每次下载chunk_size大小0x5 综合管理模块def AutoDownload(self): MusicsName readfile(self.list_filename) logging.info([] Begin Download) threads [] threadPool ThreadPoolExecutor(max_workers10)//设置线程数 for MusicName in MusicsName: thread self.treadownload(self.builder,self.downloader,MusicName.strip()) threadPool.submit(thread.run)//注册线程函数 threadPool.shutdown(waitTrue)//等待所有线程 logging.info([] Download Successful)第五行利用ThreadPoolExecutor设置线程池大小为10也就是最多有10个线程同时运行。第8行注册线程中的主函数也就是音乐链接和下载功能。0x04 总结本文通过分析音乐网站的下载方式梳理单个音乐下载方法设计代码结构模块采用依赖方法将各个模块整合一起实现多线程多音乐链接获取和下载功能。这里的核心在于token1和token2的获取和利用方面其次是设计代码模块和衔接模块。希望大家能通过本文学习到关于python和爬虫的相关知识。Usage将要下载的音乐写在Config文件夹中的MusicList里面按照这种格式执行main.py就会自动生成下载链接。LoverHelloVenomEverthing I Need

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/910244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站建设博客作业动漫制作专业就业方向和前景

CentOS6.5安装详细教程1、准备好CentOS-6.5.iso文件,并刻录到光盘中,放入光驱,重启服务器,修改BIOS为光驱启动,之后开始进入安装:2、按任意键,进入引导菜单。按上下键,移动光标&…

外贸推广建站公司百度网站推广服务商

一、前言 本文使用的虚幻引擎5.3.2,继点击场景3D物体的两种处理方式的基础完成对3D物体的点击触发后,我们需要制作一个可以弹窗显示该物体信息的UI面板,同时保证弹窗可以跟随物体。另外还讲了一种UI上的悬浮提示跟随弹窗。 二、实现 2.1、创…

网站开发的学习方法室内设计效果图qq群

文章目录1. 题目2. DFS 解题1. 题目 给定一个有 N 个结点的二叉树的根结点 root,树中的每个结点上都对应有 node.val 枚硬币,并且总共有 N 枚硬币。 在一次移动中,我们可以选择两个相邻的结点,然后将一枚硬币从其中一个结点移动…

四川建设工程网站新市区做网站

在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。 从命令提示窗口中选择 MySQL 数据库 在 mysql> 提示窗口中可以很简单的选择特定的数据库。 在 MySQL 中,要选择要使用的数据库,可…

Android 中获取稳定时间的方法 - 指南

Android 中获取稳定时间的方法 - 指南2025-09-22 20:10 tlnshuju 阅读(0) 评论(0) 收藏 举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !i…

【精品资料鉴赏】RPA财务机器人应用(基于UiPath)教材配套课件 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

如何让AI生成多页面APP原型图?AI原型设计实用指南

引言 很多产品经理已经在实际项目中开始使用AI原型设计工具,尤其是在制作APP原型图、小程序原型图等产品项目中。AI可以帮助产品经理快速产出原型图,但是也有一些容易被忽视的实用功能。例如:如何一次性生成多个页面…

国外优秀网站建设公司淄博优化网站

默认为递增顺序&#xff1b;注&#xff1a;一下例子希望自己再次复习时&#xff0c;可以用笔在纸上画画内存图。 包括有: 选择排序冒泡排序插入排序 1.选择排序 <--------------------------------------选择排序---------------------------------------> 1、选择排…

北京摇号网站维护企业网站优化托管

1. Makefile 简介 Makefile 是和 make 命令一起配合使用的. 很多大型项目的编译都是通过 Makefile 来组织的, 如果没有 Makefile, 那很多项目中各种库和代码之间的依赖关系不知会多复杂. Makefile的组织流程的能力如此之强, 不仅可以用来编译项目, 还可以用来组织我们平时的一些…

做网站成都求几个能用的地址2021

文章目录一、第1种方式1. 因依赖2. 工具类测试方法3. 服务端接收二、第2种方式三、第3种方式3.1. 引依赖3.2. 工具类测试3.3. 服务端代码一、第1种方式 1. 因依赖 <!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient --><dependency>…

广州翼讯资讯科技有限公司 网站地方建立网站做SEM

go-zero整合单机版Redis并实现增删改查 本教程基于go-zero微服务入门教程&#xff0c;项目工程结构同上一个教程。 go-zero微服务入门教程&#xff08;点击进入&#xff09; 本教程主要实现go-zero框架整合单机版Redis&#xff0c;并暴露接口实现对Redis数据的增删改查。 本…

政务网站建设经验交流发言百度推广怎么运营

目录 1、QT介绍 2、QT的特点 3、QT模块 3.1基本模块 3.2扩展模块 4、QT工程创建 1.选择应用的窗体格式 2.设置工程的名称与路径 3.设置类名 4.选择编译器 5、QT 工程解析 xxx.pro 工程配置 xxx.h 头文件 main.cpp 主函数 xxx.cpp 文件 6、纯手工创建一个QT 工程…

嘉兴型网站系统总部在什么网站上可以做中学数学家教

全世界只有3.14 % 的人关注了青少年数学之旅在这个资讯丰富且易获取的时代&#xff0c;越来越多的人不愿意花时间阅读书籍&#xff0c;碎片化阅读成了主流。人们获取的东西多而杂&#xff0c;很难系统、全面。海量信息对人是冲击&#xff0c;更是诱惑。谁不想了解天下奇闻&…

网站建设先进跟我学seo从入门到精通

前言 从刚开始学习阶段&#xff0c;一直是用的keil5开发stm32程序&#xff0c;自从看到稚晖君推荐的CLion开发嵌入式程序后&#xff0c;这次尝试在CLion上开发stm32程序。 1、配置CLion用于STM32开发的环境 这里我就不详细写了&#xff0c;没必要重新写&#xff0c;网上教程很多…

商城网站微信支付接口申请流程网站留言板怎么做

《基于单片机的物流皮带传输监控系统设计 实物仿真》 整体功能&#xff1a; 本设计采用以单片机为核心控制器&#xff0c;以及传感器检测部分作为输入部分&#xff0c;以报警、显示、洒水、排烟、电机停止模块作为输出部分&#xff0c;构成整个物流皮带传输监控系统。 本设计…

北京哪个网站最好重庆哪个网站建设比较好

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的迷宫矩阵 maze &#xff08;下标从 0 开始&#xff09;&#xff0c;矩阵中有空格子&#xff08;用 . 表示&#xff09;和墙&#xff08;用 表示&#xff09;。 同时给你迷宫的入口 entrance &#xff0c;用 entrance [entra…

简洁的网站建设合同武进做网站的公司

通信&#xff0c;在古代是通过书信与他人互通信息的意思。 今天&#xff0c;“通信”这个词的外沿已经得到了极大扩展&#xff0c;它目前的大意是指双方或多方借助某种媒介实现信息互通的行为。 如果按照当代汉语的方式理解“通信”&#xff0c;那么古代的互遣使节、飞鸽传书…

济南网站建设直播苗木企业网站源码

一、首先需要思考&#xff0c;我们在页面导出excel&#xff0c;用python导出如何写入文件的 封装前需要确认python导出excel接口返回的是一个什么样的数据类型 如下&#xff1a;我们先看下不对返回结果做处理&#xff0c;直接接收数据类型是一个对象&#xff0c;无法获取返回值…

代码随想录算法训练营第五天 | leetcode 242 349 202 1

有效的字母异位词 题目:判断两个字符串的字母是否一样 解题思路:通过字母在Ascll表对应的数字可以定义一个26容量大小的数组,将字符串包含的字母映射到数组中,再用另一个字符串对数组进行操作 代码如下: class So…

CF2146 Codeforces Round 1052 (Div. 2) 游记

A 秒了,B 挂了,1t寄了,差点掉到青名。省流 A 秒了,B 挂了,1t寄了,差点掉到青名。9.21 内含剧透,请vp后再来。 不是题解!!!!!!! 赛前 毫无压力的新开一把,飞线接上了电源,不会因为电脑没电下班了。 赛时…