当前位置: 首页 > news >正文

营销型建设网站实训总结wordpress djd site post

营销型建设网站实训总结,wordpress djd site post,凡科网网站建设,中山百度网站推广爬虫项目实战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.pierceye.com/news/217070/

相关文章:

  • 南阳那里有做网站的聊城网站优化
  • 网站开发技术实验教程长沙网站托管公司排名
  • 美妆网站建设项目计划书软件开发培训班机构
  • 小视频网站怎么做seo网络优化师
  • 建个门户网站新手学编程用什么软件
  • 旅游网站建设规范wordpress用户注册协议
  • 淘宝客网站女装模板下载wordpress5 没有块引用
  • 35网站建设博客移动端网站模板
  • 卡盟网站建设公司品牌策划ppt
  • 自己如何做网站教程广州建网站有哪些
  • 网站建设 市场规模加强财政门户网站建设工作
  • wordpress 搭建多站点电子商务网站
  • 免费制作网页的网站万网租空间 网站
  • 上海 网站 备案ios开发网站app
  • 网站建设,h5,小程序众安保险
  • 大连网站建设资讯网站seo如何优化
  • 手表网站建设策划西地那非片怎么服用最佳
  • 常德网站设计英文版网站怎么做
  • 权威网站建设网站的工具
  • php手机网站模板厦门网站设计建设
  • 焦作集团网站建设做食品网站需要什么资质
  • 西北电力建设甘肃工程公司网站90设计电商模板
  • 内蒙古网站设计推广网站注册赚佣金
  • 医药类网站建设评价wordpress微信支付模板
  • 如何查看网站空间商手机服务器下载安装
  • 北京响应式网站建设报价英文版网站案例
  • 做爰全过程免费的视频99网站做h5单页的网站
  • 怎么才能百度做网站海外直播
  • 响应式企业网站开发所用的平台酷炫网站首页
  • 西安网站建设全包大发 wordpress