爬虫
爬虫是一个对计算机综合能力要求比较高的技术活。
首先,要对网络协议,尤其是http协议,有基本的了解,能够分析网站的数据请求响应
其次,需要使用一些工具,简单的场景下使用chrome devtools的network面板足矣,除此之外还有服务端工具:
- cheerio:jQuery核心功能的一个快速灵活而又简洁的实现,主要用于服务器端操作DOM
- axios:网络请求库,可以发送http请求
步骤
以👶的某个图册为例
第一步:分析HTML结构,像我这里因为所有的图片url数据都被保存在了这里所以很好懂
第二步:用代码读取所有图片,按照实际的HTML结构编写代码,可能会需要换页、点击等
1 2 3 4 5 6 7 8 9 10 11 12
| const getImgs = async () => { const body = await axios .get('https://cheriko.fun/gallery/collect/meme.html') .then((res) => res.data);
const $ = cheerio.load(body); const loadBtn = $('.gallery-data').eq(0); const images = JSON.parse(loadBtn.text()); console.log(images); };
|
第三步:下载图片
1 2 3 4 5 6 7 8 9 10
| images.forEach(async (img) => { const buffer = await axios .get(img.url, { responseType: 'arraybuffer' }) .then((res) => res.data); const ws = fs.createWriteStream( path.join(__dirname, '../meme' + new Date().getTime() + '.jpg'), ); ws.write(buffer); });
|
于是图片都下载到了: