首先,目标抓取并下载步行街蓝图模块的所有图片。 老虎突袭地址https://bbs.hupu.com/selfie截图image.pngimage.png二世。代码1。定义请求函数,并将超时时间设置为10S。如果需要设置socks代理异步函数get (URL,options = {},config = { }){ const { socks } = config;await wait();常量源= axios。cancel token . source();返回新承诺((解决,拒绝)= & gt{ setTimeout(()= & gt;{source.cancel("请求超时...");reject();}, 10000);axios。get(url,{ httpsAgent: socks?new SocksProxyAgent(` socks://127 . 0 . 0 . 1:$ { socksPort } `):未定义,头:{ "user-agent": ua },超时:10000,cancelToken: source.token,...选项,})。然后(解决)。捕捉(拒绝);});}异步函数getImage(URL){ return await get(URL,{ response type:" array buffer " });}2.定义HTML解析函数。关注中文解析函数jQuery(HTML){ Return cheerio . load(HTML,{ decode entities:false });}3.请求网页,解析网页代码,获取图片地址,下载到本地(async()= >;{ try { for(让I = 1;我& lt2;i++){ try { const html =(await get(` https://BBS . hupu . com/self ie-$ { I } `))。数据;const $ = jquery(html);const list = $(“html”)。查找("。for-list & gt;李”);for(设j = 0;j & lt列表.长度;j++) { try { const name = $(list[j])。find("a ")。text();const link = $(list[j])。find("a ")。attr(" href ");console.log(名称,链接);如果(姓名& amp& amplink){ const detail =(await get(` https://BBS . hupu . com $ { link } `))。数据;const $ 1 = jquery(detail);const imgs = $1("html ")。查找(" p & gtimg”);Console.log("图像长度:",imgs . length);if(imgs . length){ await exec async(` CD imgs & amp;& ampmkdir ${md5(name)} `)。catch(()= & gt;{});} for(设k = 0;k & ltimgs.lengthk++){ try { const imgLink = $ 1(imgs[k])。attr(" src ");if(img link){ const img data =(await getImage(img link))。数据;await write file async(path . resolve(_ _ dirname,`。/imgs/$ { MD5(name)}/$ { MD5(imgLink)} . jpg `),img data);Console.log("成功创建");} } catch(e){ console . log(e);} } } } catch (e) {控制台. log(e);} } } catch(e){ console . log(e);} } } catch(e){ console . log(e);}})();三、运行截图image.png四,代码地址ThreesomeWiki/hupu