本文介绍: 在互联网时代,图片是信息传递和展示的重要组成部分,而提取网页中的图片数据对于一些项目和需求来说尤为重要。本文将详细介绍如何使用Node.js编写爬虫程序,实现网页图片的批量爬取,帮助您轻松获得所需的图片数据,并揭示一些实用技巧和注意事项。三、运行程序与注意事项。
在互联网时代,图片是信息传递和展示的重要组成部分,而提取网页中的图片数据对于一些项目和需求来说尤为重要。本文将详细介绍如何使用Node.js编写爬虫程序,实现网页图片的批量爬取,帮助您轻松获得所需的图片数据,并揭示一些实用技巧和注意事项。
一、准备工作
- 安装Node.js:确保您的电脑上已经安装了Node.js,您可以从官网(https://nodejs.org/)下载最新版本并进行安装。
- 创建项目目录:在本地创建一个新的文件夹作为项目目录,用于存放爬虫程序和爬取的图片。
- 初始化项目:打开命令行工具,进入项目目录,并执行以下命令初始化项目:
npm init -y
- 安装相关依赖:在项目目录下执行以下命令,安装需要的依赖包:
npm install axios cheerio fs path
- 导入依赖:
在项目根目录下新建一个crawler.js
文件,并在文件头部导入需要的依赖:const axios = require('axios'); const cheerio = require('cheerio'); const fs = require('fs'); const path = require('path');
- 发起HTTP请求:
编写一个fetchPage
函数,用于发起HTTP请求并获取网页内容:async function fetchPage(url) { try { const response = await axios.get(url); return response.data; } catch (error) { console.error(error); throw new Error('Failed to fetch the page'); } }
- 解析网页:
利用cheerio
库来解析网页内容,提取其中的图片链接:function extractImageUrls(html) { const $ = cheerio.load(html); const imageUrls = []; $('img').each((index, element) => { const src = $(element).attr('src'); // 对图片链接进行处理,补全相对路径等 const imageUrl = new URL(src, 'http://example.com').href; imageUrls.push(imageUrl); }); return imageUrls; }
- 下载图片:
编写一个downloadImage
函数,用于下载图片到本地:async function downloadImage(url, savePath) { try { const response = await axios.get(url, { responseType: 'stream' }); const filePath = path.join(savePath, path.basename(url)); const writer = fs.createWriteStream(filePath); response.data.pipe(writer); return new Promise((resolve, reject) => { writer.on('finish', resolve); writer.on('error', reject); }); } catch (error) { console.error(error); throw new Error('Failed to download the image'); } }
- 组合函数:
编写一个主函数,将上述函数组合起来,实现图片的批量爬取:async function main() { const url = 'http://example.com'; // 替换为需要爬取的网页URL const savePath = path.join(__dirname, 'images'); try { const html = await fetchPage(url); const imageUrls = extractImageUrls(html); fs.mkdirSync(savePath, { recursive: true }); for (const imageUrl of imageUrls) { await downloadImage(imageUrl, savePath); console.log('Downloaded:', imageUrl); } } catch (error) { console.error(error); } } main();
原文地址:https://blog.csdn.net/D0126_/article/details/133267727
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_#ID#.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。