教你怎么爬元气桌面的壁纸和视频

news2024/11/22 22:28:13

开发语言:我大前端必备的nodejs

看成果先:

这次爬下来的是手机端视频壁纸,共848个视频

-----------------------------------下边正式开始----------------------------------

1、用fiddler抓包,查看接口地址

接口地址为:https://pcwallpaper.zhhainiao.com/v20903/wplive/list

参数为

{"login_info":{},"resolution_support":0,"wtype_support":1,"encrypt_support":"none_encrypt","page":1,"page_size":24,"cate_id":2,"tag_id":null,"sort_type":2,"common":{"open_id":"T562a73fbd3f8ccccf669fd000508da","token":"PdAOr3dfdfdfdsdf6MlC7FP5l2hZTrdTcLKsQpd","device_id":"b3e88773dsdfsdfsdfsdfaac1e61be6d","player_version":115,"platform":"pc"}}

2、点击元气桌面的图片,查看详细,抓包找到详情接口

抓到详细接口:https://pcwallpaper.zhhainiao.com/mobile/wallpaper/live/detail

参数为:

{"login_info":{},"wid":368129,"common":{"open_id":"T562a73fbdfsdrfd000508da","token":"PdAOsdfsdD6MlC7FP5l2hZTrdTcLKsQpd","device_id":"b3e88773d5d32sdfsdfac1e61be6d","player_version":115,"platform":"pc"}}

经分析,主要参数变化就是从列表中获取的 wid 参数

3、写代码,先递归获取列表中的所有wid


let getList = async opt => {

	$.post("https://pcwallpaper.zhhainiao.com/v20903/wplive/list", {
		"login_info": {},
		"resolution_support": 0,
		"wtype_support": 1,
		"encrypt_support": "none_encrypt",
		"page": opt.page,
		"page_size": 24,
		"cate_id": null,
		"tag_id": 109,
		"sort_type": 2,
		"common": {
			"open_id": "T562a73fbd3fssd000508da这里换成自己的",
			"token": "PdAOr3XqiugtdFP5l2hZT这里换成自己的d",
			"device_id": "b3e88773d5d3226d5这里换成自己的e6d",
			"player_version": 115,
			"platform": "pc"
		}
	}).then(async res => {
		if (res.data.data && res.data.data.list.length > 0) {
			for (let item of res.data.data.list) {
				let mobile_video = await getMobile({
					wid: item.wid
				})
				if (mobile_video) {
					saveVideo({msg:mobile_video+"\r\n"})
				}

			}
			console.log("第"+opt.page+"页")
			getList({
				page: opt.page + 1
			})
		} else {
			console.log(videos.length)
			console.log("结束了")
		}
	})

}

 4、拿到列表数据以后,开始请求详细接口


let getMobile = async opt => {

	let p = Q.defer();
	$.post("https://pcwallpaper.zhhainiao.com/mobile/wallpaper/live/detail", {
		"login_info": {},
		"wid": opt.wid,
		"common": {
			"open_id": "T562a73fbd3f8747e62f669fd000508da",
			"token": "PdAOr3XqiugtksuYD6MlC7FP5l2hZTrdTcLKsQpd",
			"device_id": "b3e88773d5d3226d5656eaac1e61be6d",
			"player_version": 115,
			"platform": "pc"
		}
	}).then(res => {
		if (res.data && res.data.data) {

			p.resolve(res.data.data.mobile_preview_video)
		} else {
			p.resolve("")
		}

	})
	return p.promise
}

5、最后,下载视频到本地


let saveVideo = async opt=>{
	/* learnNode.js */
	 
	
	 
	fs.appendFile('D:\\work\\test\\video.txt',opt.msg,(err)=>{
	 
	  if(err){
	 
	    console.log('出错')
	 
	  }else{
	 
	    console.log('追加内容')
	 
	  }
	 
	})
}

// getList({
// 	page: 1
// })

// $.post("https://pcwallpaper.zhhainiao.com/mobile/wallpaper/live/detail", {"login_info":{},"wid":359624,"common":{"open_id":"T562a73fbd3f8747e62f669fd000508da","token":"PdAOr3XqiugtksuYD6MlC7FP5l2hZTrdTcLKsQpd","device_id":"b3e88773d5d3226d5656eaac1e61be6d","player_version":115,"platform":"pc"}}).then(res => {
// 	console.log(res.data.data.mobile_video)
// })
let idx = 0;
let  downVideo=async opt=>{
	let p = Q.defer();
	$({
		url:opt.url,
		responseType: 'stream'
	}).then(
		(resp) => {
			idx++
			const writer = fs.createWriteStream("D:\\work\\test\\videos\\"+idx+".mp4")
			resp.data.pipe(writer)
			writer.on('finish', () => {
				console.log("完成",idx)
				p.resolve(1)
			})
			writer.on('error', (e) => {
				
				p.resolve("")
			})
		}
	)
	
	return p.promise
}

最后,有些视频链接失效了,需要处理一下,下方是完整代码,有些被注释了,因为每一步执行的时候用的的函数不一样,需要有点基础才能修改

let $ = require("axios")
const {
	async
} = require("q");
var Q = require('q');
let fs = require('fs');
let videos = []

let getList = async opt => {

	$.post("https://pcwallpaper.zhhainiao.com/v20903/wplive/list", {
		"login_info": {},
		"resolution_support": 0,
		"wtype_support": 1,
		"encrypt_support": "none_encrypt",
		"page": opt.page,
		"page_size": 24,
		"cate_id": null,
		"tag_id": 109,
		"sort_type": 2,
		"common": {
			"open_id": "T562a73fbd3f8747e62f669fd000508da",
			"token": "PdAOr3XqiugtksuYD6MlC7FP5l2hZTrdTcLKsQpd",
			"device_id": "b3e88773d5d3226d5656eaac1e61be6d",
			"player_version": 115,
			"platform": "pc"
		}
	}).then(async res => {
		if (res.data.data && res.data.data.list.length > 0) {
			for (let item of res.data.data.list) {
				let mobile_video = await getMobile({
					wid: item.wid
				})
				if (mobile_video) {
					saveVideo({msg:mobile_video+"\r\n"})
				}

			}
			console.log("第"+opt.page+"页")
			getList({
				page: opt.page + 1
			})
		} else {
			console.log(videos.length)
			console.log("结束了")
		}
	})

}


let getMobile = async opt => {

	let p = Q.defer();
	$.post("https://pcwallpaper.zhhainiao.com/mobile/wallpaper/live/detail", {
		"login_info": {},
		"wid": opt.wid,
		"common": {
			"open_id": "T562a73fbd3f8747e62f669fd000508da",
			"token": "PdAOr3XqiugtksuYD6MlC7FP5l2hZTrdTcLKsQpd",
			"device_id": "b3e88773d5d3226d5656eaac1e61be6d",
			"player_version": 115,
			"platform": "pc"
		}
	}).then(res => {
		if (res.data && res.data.data) {

			p.resolve(res.data.data.mobile_preview_video)
		} else {
			p.resolve("")
		}

	})
	return p.promise
}

let saveVideo = async opt=>{
	/* learnNode.js */
	 
	
	 
	fs.appendFile('D:\\work\\test\\video.txt',opt.msg,(err)=>{
	 
	  if(err){
	 
	    console.log('出错')
	 
	  }else{
	 
	    console.log('追加内容')
	 
	  }
	 
	})
}

 getList({
 	page: 1
 })

// $.post("https://pcwallpaper.zhhainiao.com/mobile/wallpaper/live/detail", {"login_info":{},"wid":359624,"common":{"open_id":"T562a73fbd3f8747e62f669fd000508da","token":"PdAOr3XqiugtksuYD6MlC7FP5l2hZTrdTcLKsQpd","device_id":"b3e88773d5d3226d5656eaac1e61be6d","player_version":115,"platform":"pc"}}).then(res => {
// 	console.log(res.data.data.mobile_video)
// })
let idx = 0;
let  downVideo=async opt=>{
	let p = Q.defer();
	$({
		url:opt.url,
		responseType: 'stream'
	}).then(
		(resp) => {
			idx++
			const writer = fs.createWriteStream("D:\\work\\test\\videos\\"+idx+".mp4")
			resp.data.pipe(writer)
			writer.on('finish', () => {
				console.log("完成",idx)
				p.resolve(1)
			})
			writer.on('error', (e) => {
				
				p.resolve("")
			})
		}
	)
	
	return p.promise
}

let readText = async opt=>{
	let txt = fs.readFileSync("D:\\work\\test\\video.txt","utf-8")
	let arr = txt.split("\r\n")
	console.log(arr)
	for(let item of arr){
		await downVideo({url:item})
		console.log(arr.length)
	}
}
//readText()

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

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

相关文章

springboot~自定义favicon加载问题

影响自定义favicon加载的原因 1、浏览器缓存问题2、由于favicon图标是在一个session会话中,所以需要关闭重开浏览器3、favicon源文件格式问题 1、浏览器缓存问题 清空浏览器缓存,或者是在network请求中停用缓存 2、由于favicon图标是在一个session会话中…

18 矩阵置0

矩阵置0 题解1 首行首列做标志记录(原地改数组)题解2 位计算 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 提示: m matrix.lengthn matrix[0].length1 …

210. 课程表 II

文章目录 Tag题目来源题目解读解题思路方法一:拓扑排序 写在最后 Tag 【拓扑排序】 题目来源 210. 课程表 II 题目解读 在选修某些课程之前需要先学习某些课程,先学习的课程有数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] 表…

机器学习入门教学——交叉验证

1、简介 交叉验证是在机器学习建立模型和验证模型参数时常用的办法,一般被用于评估一个机器学习模型的表现。更多的情况下,我们也用交叉验证来进行模型选择。【注】在训练模型时,为了提高模型的质量,我们会将数据集划分为训练集、…

【算法与数据结构】501、LeetCode二叉搜索树中的众数

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:根据前面几篇文章98、LeetCode验证二叉搜索树、530、LeetCode二叉搜索树的最小绝对差。我们知道二叉搜…

大数据分析案例-基于随机森林算法构建二手房价格预测模型

🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 喜欢大数据分析项目的小伙伴,希望可以多多支持该系列的其他文章 大数据分析案例合集…

钟爱墨西哥市场?长城汽车官宣进入,已启动本地化生产研究和规划

长城汽车公司宣布正式进入墨西哥市场,并以“Hello Tomorrow”为主题发布了GWM品牌暨哈弗H6 HEV车型。这标志着长城汽车在墨西哥市场的运营开始,公司已启动本地化生产的研究和规划工作。 据悉,长城汽车公司已在拉丁美洲开设24家经销商&#xf…

代码随想录第45天|70. 爬楼梯,322. 零钱兑换,279.完全平方数

70. 爬楼梯 开始按感觉做 class Solution {public int climbStairs(int n) {//第一版按感觉做//dp[i]爬到第i个台阶的方法数int[] dpnew int[n1];//初始化dp[0]1;dp[1]1;for(int i2;i<n;i){dp[i]dp[i-1]dp[i-2];}return dp[n];} } 改进-用完全背包做 这是背包里求排列问…

关于点光源踩坑的一点总结

1 点光源不能单独作用域几何体。需要有其他光源的辅助 2 如果你添加了点光源&#xff0c;同时设置的是默认值&#xff0c;那么界面上很可能展示的几何体没有任何光源效 3对于点光源特别注意它的属性光照距的衰退量也就是decay。其默认值为2.&#xff0c;如果我们设置一个较小…

国产编程IDE到底败在哪里?E4A安卓开发,猎码,易语言,火山

最新发现&#xff0c;原来的猎码下载链接都找不到了&#xff0c;再也没有猎码的影子了。 猎码的好处是Jdk,ADK等一起打包了解压自动配置好环境;编绎时各种出错情况提示不人性化&#xff0c;比较难用。 最近出了一款Amix&#xff0c;说是支持跨平台,安卓APP,小程序开发等功能。…

深度思考ES面经

1 推荐文章 2万字详解&#xff0c;吃透 Elasticsearch 2 什么是倒排索引&#xff0c;为什么这么叫&#xff1f; 倒排索引&#xff08;Inverted Index&#xff09;是一种为快速全文搜索而设计的数据结构。它被广泛应用于搜索引擎&#xff0c;其中 Elasticsearch&#xff08;简…

报错处理:Docker镜像无法启动

报错环境&#xff1a; Linux Docker 具体报错&#xff1a; standard_init_linux.go:211: exec user process caused "no such file or directory" 排错思路&#xff1a; 当尝试启动Docker镜像时&#xff0c;如果出现 no such file or directory 的错误&#xff0c;可…

简单记录一下Splunk ES 升级

1: 背景: 现在有些app 产品对splunk ES (enterprise security) 的版本有要求,这个就要求splunk ES 随着Splunk enterprise 也一起升级,下面先列一下各个版本的兼容: Splunk products version compatibility matrix - Splunk Documentation 下面列出的8.2.11 的版本: 2:…

Electron和vue3集成

本篇我们仅实现Electron和vue3通过先运行起vue3项目&#xff0c;再将vue3的url地址交由Electron打开的方案&#xff0c;仅由Electron在vue3项目上套一层壳来达到脱离本机浏览器运行目的 1、参考快速上手 | Vue.js搭建起vue3初始项目 npm install -g vue npm install -g vue/c…

【拯救大学生计划】:我做了一个QQ分组神器

文章目录 &#x1f60a;前言&#x1f603;使用教程第一步&#xff1a;获取好友网名和备注第二步&#xff1a;文件设置第三步&#xff1a;自动选择好友 &#x1f606;停顿问题解决方法&#x1f604;结束语&#x1f4da;资源 专栏Python零基础入门篇&#x1f525;Python网络蜘蛛&…

【改进算法】【IHAOAVOA】天鹰优化算法和非洲秃鹫混合优化算法

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现《IHAOAVOA: An improved hybrid aquila optimizer and African vultures optimization algorithm for global optimization problems》&#xff0c;天鹰优化算法&#xff08;AO&#xff09;和非洲…

智慧工地: 建筑施工一体化信息管理系统源码

智慧工地管理云平台系统是一种利用人工智能和物联网技术来监测和管理建筑工地的系统。它可以通过感知设备、数据处理和分析、智能控制等技术手段&#xff0c;实现对工地施工、设备状态、人员安全等方面的实时监控和管理。 一、智慧工地管理系统让工程施工智能化 1、内容全面&a…

区块链技术与应用 - 学习笔记3【比特币数据结构】

大家好&#xff0c;我是比特桃。本系列笔记只专注于探讨研究区块链技术原理&#xff0c;不做其他违反相关规定的讨论。 区块链技术已被纳入国家十四五规划&#xff0c;在“加快数字发展 建设数字中国”篇章中&#xff0c;区块链被列为“十四五”七大数字经济重点产业之一&#…

(二十五)大数据实战——kafka集群及Kafka-Eagle控制台安装与部署

前言 本节内容我们主要介绍一下搭建kafka集群以及kafka集群的一个web客户端组件Kafka-Eagle的部署安装&#xff0c;使用的kafka版本是kafka_2.12-3.0.0。在搭建kafka集群之前&#xff0c;我们要预先搭建好zookeeper集群&#xff0c;这里作者默认zookeeper的集群环境已经搭建完…

飞行动力学 - 第18节-全机航向稳定性与隐身性 之 基础点摘要

飞行动力学 - 第18节-全机航向稳定性与隐身性 之 基础点摘要 1. 全机航向静稳定性2. 垂尾与隐身3. 参考资料 1. 全机航向静稳定性 机翼贡献 上反角 复杂、极小幅降低 后掠角 增加稳定性 机身贡献 降低稳定性 尾翼贡献 航向静稳定性的最大来源 平尾 类似机翼贡献 垂尾 最大来…