使用nodejs axios cheerio模块 爬取cytoid.io 关卡音频
localhost:8888
var axios = require("axios");
var cheerio = require('cheerio');
var http = require('http');
var util = require('util');
var fs = require('fs');
var moment = require('moment');
var formidable = require('formidable');
var util = require('util');
const { Script } = require("vm");
jquery=fs.readFileSync('+/jquery-3.6.0.min.js');
var current_time = moment(Date.now()).format('YY MMDD HH'); //YY MMDD HHmm:ss
pagenumber=fs.readFileSync('page.txt');
axios.get('https://cytoid.io/levels?sort=creation_date&order=desc&category=all&page='+pagenumber+'').then(resp => {
var $ = cheerio.load(resp.data)
var lis = $(".container .content-card")
var patt1=/https(.*?)w=576/g;
repos=[]
for (var i = 0; i < lis.length; i++) {
li = lis.eq(i)
repo={
zhuzhe:li.find("h2").text().trim(),
gequming:li.find("h1").text().trim(),
gequwangzhi: li.find("div a").attr("href").trim(),
yinpin:li.find("audio").attr("src").trim(),
fengmian:li.find(".content-card-bg").attr("style").trim().match(patt1),
}
repos.push(repo)
}
console.log(repos)
})
http.createServer(function (req, response) {
response.setHeader('Content-Type','text/html;charset=utf-8');
response.write("<!DOCTYPE HTML>");
response.write('<title>'+pagenumber+'page'+current_time+'</title>');
response.write("<html>");
response.write('<body οnkeydοwn="kyjx(event)">');
response.write('<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script>');
response.write('<script>'+jquery+'</script>');
response.write('<style>a {opacity:0.1;text-decoration:none;}h1{margin:0px}</style>');
//IP查看
response.write('<script>fetch("http://ip-api.com/json/") .then(function(response) {return response.json();}).then(function(data) {');
response.write('$("#iphh").html("IP:"+data.query+" 国家:"+data.country+" 地区:"+data.city)');
response.write('});</script>');
response.write('<h1 id="iphh"></h1>');
response.write('<form action="http://localhost:8888/page" method="GET"><input type="text" name="textpage"/><input type="submit" value="跳转"></form>');
response.write('<script>function stopall(){$("#music0")[0].pause();$("#music1")[0].pause();$("#music2")[0].pause();$("#music3")[0].pause();$("#music4")[0].pause();$("#music5")[0].pause();$("#music6")[0].pause();$("#music7")[0].pause();$("#music8")[0].pause();$("#music9")[0].pause();$("#music10")[0].pause();$("#music11")[0].pause();$("#music12")[0].pause();$("#music13")[0].pause();$("#music14")[0].pause();$("#music15")[0].pause();$("#music16")[0].pause();$("#music17")[0].pause();$("#music18")[0].pause();$("#music19")[0].pause();$("#music20")[0].pause();$("#music21")[0].pause();$("#music22")[0].pause();$("#music23")[0].pause();}</script>')
for (var k=0;k<24;k++){
response.write('<div id="div'+k+'" style="width:min-content; text-align:center; padding-top:0px; padding-bottom:125px; margin: 0 auto;"> <a href="https://cytoid.io'+repos[k].gequwangzhi+'" target="_blank" >_____________________________________________________________</a>'); //新建标签打开
response.write('<br><audio id="music'+k+'" type="audio/mpeg" controls="" src="'+repos[k].yinpin+'" style="visibility:hidden;margin-top:40px;margin-bottom:-10px"></audio>');
response.write('<h1 οnclick="mouseclick'+k+'()">'+repos[k].gequming+'</h1>'); //标题
response.write('<br>');
//visible
response.write('<script>function audioplay'+k+'(){ $("audio").css("visibility","hidden"); stopall(); $("#music'+k+'")[0].play(); }</script>')
response.write('<script>function mouseclick'+k+'(){ $("audio").css("visibility","hidden"); $("#music'+k+'").css("visibility","visible");}</script>')
//这里<a class="mark" href="#class-fsstats" id="class-fsstats">#</a>
response.write('<img src="'+repos[k].fengmian+'" οnclick="audioplay'+k+'()" style="height:720px; margin:0 auto;">');
//response.write('<div style="'+repos[k].fengmian+' height:360px; width:576px;background-size:cover" οnclick="audioplay'+k+'()" >');
response.write('</div>');
response.write('<br>');
//response.write('<script>function audioplay'+k+'(){$("#audio").attr("src", "'+repos[k].yinpin+'");$(".audioclass")[0].pause();$("#audio")[0].play();}</script>')
}
response.write('<Script> i=0; function kyjx(event){var x=event.key;if(x=="ArrowLeft"){i--;window.location.href= "#div"+i;eval("audioplay"+i+"()");console.log(i)} else if(x=="ArrowRight"){i++;window.location.href="#div"+i;eval("audioplay"+i+"()");console.log(i);}}</Script>')
response.write("</body>");
response.write("</html>");
response.end("")
if(req.url.includes("textpage") && req.method==="GET"){
var str=req.url.split('textpage=')
console.log(str[1])
fs.writeFileSync("./page.txt", str[1],{ flag: "w+" })
pagenumber=fs.readFileSync('page.txt');
axios.get('https://cytoid.io/levels?sort=creation_date&order=desc&category=all&page='+pagenumber+'').then(resp => {
var $ = cheerio.load(resp.data)
var lis = $(".container .content-card")
var patt1=/https(.*?)w=576/g;
repos=[]
for (var i = 0; i < lis.length; i++) {
li = lis.eq(i)
repo={
zhuzhe:li.find("h2").text().trim(),
gequming:li.find("h1").text().trim(),
gequwangzhi: li.find("div a").attr("href").trim(),
yinpin:li.find("audio").attr("src").trim(),
fengmian:li.find(".content-card-bg").attr("style").trim().match(patt1),
}
repos.push(repo)
}
console.log(repos)
})
};
}).listen(8888);