鎴戞槸鐩存帴浠庢湪甯冭€冪殑锛屾帓鐗堜篃鎳掑緱鏀逛簡銆傪煒勷煒勷煒勶紝璋㈠箷鍦板潃锛歨ttps://mubu.com/doc/_77_RCP9GG鍓嶈█鍏徃鎼浜嗭紝鎹簡鏂扮數鑴戙€傛垜瑙夊緱妗岄潰鏈夌偣绌恒€傛垜鎯冲仛涓€浜涢珮绾ц儗鏅浘鐗囨潵瀹夎13锛屾墍浠ユ垜鏈夎繖涓」鐩€傝胺姝屼簡涓€鐣紝鎰熻杩樻槸姣旇緝鍠滄wallhaven椋庢牸鐨勮儗鏅浘锛屼簬鏄紑濮嬪仛~~~鍋氫簡寰堝鎬濊矾鍒嗘瀽椤甸潰锛屽垎鏋愰〉闈㈢粨鏋勶紝鐒跺悗鑾峰彇鍥剧墖鍦板潃锛屽彂璧疯姹傦紝鍙渶瑕佸湪鏈湴缂栧啓鍏蜂綋鐨勬搷浣滄潵鍒嗘瀽椤甸潰锛屽垎鏋愰〉闈㈢粨鏋勶紝鐒跺悗鑾峰彇鍥剧墖鍦板潃锛岄〉闈㈢粨鏋勮鎯呯缉鐣ュ浘椤甸潰缁撴瀯缂╃暐鍥惧湴鍧€锛歨ttps://th.wallhaven銆俢c/small/rd/rd7dlq.jpg澶у浘鍦板潃锛歨ttps://w.wallhaven.cc/full/rd/wallhaven-rd7dlq.jpg鎵惧埌瑙勫緥閫氳繃鐭ラ亾灏忓浘鍦板潃锛屾壘鍑哄ぇ鍥惧湴鍧€锛屼笉鍚岀綉绔欎笉鍚屻€傛壘鍒板垎椤电晫闈紝鐭ラ亾缃戠珯鐨勫竷灞€鍜岃鍒欏悗锛屾垜浠氨鍙互寮€濮嬬紪鐮佷簡銆傜紪鐮佹€濊矾锛氬厛鐖彇鎵€鏈夌殑缂╃暐鍥撅紝鐖彇鍚庯紝10绉掍竴娆′笅杞?0涓缉鐣ュ浘锛岀劧鍚庡啓鍏ヨ繘鍏ユ湰鍦板揩閫掑簲鐢ㄧ敓鎴愬櫒鏋勫缓蹇€掑簲鐢ㄧ殑鍏蜂綋姝ラ銆傚叿浣撴楠ゅ弬鑰冨畼缃戦渶瑕佺敤鍒扮殑搴揷onsola锛岃鏃ュ織鏇村ソ鐪嬶紝鏂逛究鐪媕query鐨刢heerionode鐗堟湰锛岀敤浜庤В鏋愰〉闈€侫xios鍙戦€佽姹傚拰涓嬭浇鍥剧墖銆傛牳蹇冧唬鐮佸彂璧稲equest锛岃幏鍙栫缉鐣ュ浘鍦板潃锛岀劧鍚庝繚瀛樺湪鏁扮粍涓繘琛岃疆璇紝璋冪敤鍒嗛〉鎺ュ彛鑾峰彇缂╃暐鍥惧湴鍧€涓嬭浇鍥剧墖锛岀劧鍚庡瓨鍌ㄥ埌鏈湴鐢佃剳銆傛ゼ涓荤敤鐨勬槸涓囧勾绐楋紝宸煒勬晥鏋滐紝缇庢粙婊?鏍稿績浠g爜constreptileUrl='https://wallhaven.cc/toplist?page='//鏈湴瀛樺偍璺緞constsaveDir='E:/myExpressDownload/toplist3/'璁ヽurrentPage=1constmaxPage=2constimgUrlList=[]init()/***鎶撳彇涓荤▼搴忓叆鍙?/asyncfunctioninit(){log.info('涓荤▼搴忓惎鍔紝璇疯€愬績绛夊緟~')log.info(`寮€濮嬬埇鍙?{reptileUrl}鐨勫浘鐗嘸)log.info(`鏂囦欢灏嗕繚瀛樺埌浠ヤ笅鍦板潃锛?{saveDir}`)//鍒ゆ柇鏈湴瀛樺偍鏂囦欢澶规槸鍚﹀瓨鍦╥f(!fs.existsSync(saveDir)){log.info('鐩爣鏂囦欢涓嶅瓨鍦紝寮€濮嬫柊寤烘枃浠跺す~')fs.mkdirSync(saveDir);}if(currentPage>maxPage){log.error('瓒呰繃鏈€澶ч〉鏁帮紝鍋滄閲囬泦婧愭暟鎹紝寮€濮嬫姄鍙栧浘鐗噡')try{constdownloadTimer=setInterval(()=>{if(!imgUrlList.length){log.error('涓嶇敤浜嗭紝鏀跺伐~~~~')clearInterval(downloadTimer)returnfalse}log.success('寮€濮嬭疆璇笅杞藉浘鐗噡')downloadPicture(imgUrlList.splice(0,10))},10000);}catch(error){log.error(`downloadPicturefail===>`,error)}//constdownloadTimer=setInterval(()=>{//if(!imgUrlList.length){//log.error('娌℃湁鍥剧墖锛岀粓浜庡畬鎴愬伐浣滀簡锛岀疮姝讳簡~~~')//clearInterval(downloadTimer)//}//log.success('寮€濮嬭疆璇笅杞藉浘鐗噡')//downloadPicture(imgUrlList.splice(0,10))//},20000);returnfalse}try{log.info(`寮€濮嬫姄鍙栭〉闈?{currentPage}`)constwebsiteHtml=awaitaxiosRequest.get(`${reptileUrl}${currentPage}`)consthtml=websiteHtmlconst$=cheerio.load(html);$('.thumbimg').each((i,v)=>{constsmallUrl=v.attribs['data-src']||v.attribs.srcconsturlArray=smallUrl.split('/')constfileName=urlArray[urlArray.length-1]constfullUrl=`https://w.wallhaven.cc/full/${fileName.substring(0,2)}/wallhaven-${fileName}`smallUrl&&imgUrlList銆俻ush({smallUrl:smallUrl,fullUrl:fullUrl,fileName})})log.error(`imgUrlList==>`,imgUrlList)sleep(init)}catch(error){log.error(`鎶撳彇閿欒锛岄敊璇俊鎭涓?=>`,error)}}functionsleep(callback){currentPage++constsleepTimeout=commonUtils.getRandomNumber(1,10)letcopyTimeout=sleepTimeoutlog.info(`鐖北澶锛屾湁鐐圭疮锛屼紤鎭?{sleepTimeout}绉掞紝鐒跺悗缁х画馃槃`)constlogTimer=setInterval(()=>{if(copyTimeout<=1){clearInterval(logTimer)}log.success(`鍊掕鏃?{--copyTimeout}绉掑紑濮嬪伐浣渵`)},1000);setTimeout(()=>{typeofcallback==='function'&&callback()},sleepTimeout*1000);}asyncfunctionfindPicture(aTagArray){log.info('寮€濮嬭В鏋愬浘鐗囧唴瀹箏')constarray=aTagArray.map(v=>axiosRequest.get(v))returnPromise.all(array)}functiondownloadPicture(pictureArray){log.info('寮€濮嬪彂閫佸浘鐗囦笅杞借姹倊')returnpictureArray.reduce((accumulator,currentValue,currentIndex,array)=>{console.log(currentValue.fullUrl,'currentValue.fullUrl')constpromise=axiosRequest.get(currentValue.fullUrl,{responseType:'stream'}).then(res=>{constresult=res.pipe(fs.createWriteStream(`${saveDir}${currentValue.fileName}`))log.success(`鎴愬姛淇濆瓨鍥剧墖鍒版湰鍦帮紝淇濆瓨浣嶇疆==>${saveDir}${currentValue.fileName}`)})accumulator.push(promise)returnaccumulator},[])}瀹屾暣浠g爜https://github.com/qinyuanqib...缁撹鏈枃濡傛湁閿欒锛屾杩庢寚姝f垜锛岄潪甯告劅璋㈠彂鐜版湁鐢ㄧ殑鑰侀搧锛屽弻鍑伙紝灏忕孩蹇冭蛋涓€娉紝娆㈣繋娉兼按锛屽姞娌癸紝浜掔浉浼ゅ鍝堝搱o(鈭鈭?o鍝堝搱
