southernMD 南山有壶酒
作词 : 偽物
分类
  • 暂无内容
站点信息
标签云
目录
作词 : 偽物
如何爬取某知名gal网站背景图
2023/7/6 21:37:25  |
0  |
65
爬虫

完整代码,记得替换url

js 复制代码
const request =  require('request');//
const iconv = require('iconv-lite');//设置编码格式
const Cheerio = require('cheerio');
const axios = require('axios');
const fs = require('fs');
//封装成函数
const requestPromise = (url) =>{
	return new Promise((resolve, reject) =>{
		//先取消原有的编码格式
		request(url, {encoding:null},function (error, response, body) {
			if(response.statusCode == 200){
				//如果原网页编码格式有问题,可以转成ubt8格式的,该括号内utf-8为原网页编码格式(演示使用)
				const bufs = iconv.decode(body, 'utf-8');
				const html = bufs.toString('utf-8');//转成utf-8
                const $ = Cheerio.load(html);//成功后用cheerio加载
                const urlRegex = /url\((['"]?)(.*?)\1\)/g;
                let matches;
                const urls = []
                while ((matches = urlRegex.exec($('style'))) !== null) {
                    const url = matches[2];
                    urls.push(url);
                }
                urls.pop()
				resolve(urls);
			}
			else{
                console.log(response.statusCode)

				reject(error);
			}
		});
	})
}
const url = '某知名弟弟网站url';  
const urls = [];
const PromiseUrls = []
for(let i=0;i<100;i++){
    PromiseUrls.push(new Promise((resolve, reject) => {
        setTimeout(() => {
          requestPromise(url + `?t=${Math.random()}`)
            .then(resolve)
            .catch(reject);
        }, 1000 * i); // Delay of 1 second between each request
      }))
}
Promise.all(PromiseUrls).then((res)=>{
    const urlList = [...new Set(res.flat())]
    urlList.forEach((item)=>{
        axios.get(item, { responseType: 'arraybuffer' })
        .then(response => {
          fs.writeFileSync(`./galImage/${item.substr(item.lastIndexOf('/')+1)}`, response.data, 'binary');
        })
        .catch(error => {
          console.error('图片下载失败:', error);
        });
    })
}).catch(err => {
    console.error(err);
});
    

使用request函数直接请求网站地址并不设置编码模式可以直接获取到网站的html源代码,某知名gal网站将图片地址直接放在了页面style标签内。

所以我可以直接通过$('style')然后直接正则获取链接最后通过axios下载然后保存就可以了

标题:如何爬取某知名gal网站背景图

作者:southernMD

发布于:

评论
昵称
邮箱
网站
评论
0 / 125
评论列表(0)
移至左侧
回到顶部
日间模式
开启音乐
隐藏面板
a