【node】用node爬取网页图片,并创建目录 将爬取的图片存储到目录中,附带源码

news2024/11/24 14:15:49

 

 效果图:

 完整代码:

var myRequest = require('request')
var myCheerio = require('cheerio')
const http = require('http');
const fs = require('fs');

// 要爬取的目标网页地址
var myURL = 'https://588ku.com/sheyingtu/0-0-default-0-1/'

// 目标文件夹路径
const destinationFolder = './images/'

// 创建目标文件夹(如果不存在)
if (!fs.existsSync(destinationFolder)) {
    fs.mkdirSync(destinationFolder);
}

function request(options, callback) {
    var options = {
        url: options.url, headers: options.headers
    }
    myRequest(options, callback)
}
// 配置请求
var options = {
    url: myURL,
    headers: {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36'
    },
    encoding: null // 添加此行,以便返回二进制数据
}
request(options, function (err, res, body) {
    var html = body;
    // 将 HTML 内容加载进 cheerio,并指定 { decodeEntities: false } 参数以保留原始的实体编码,而不进行解码
    myCheerio.load(html, { decodeEntities: false })
    var $ = myCheerio.load(html);
    $('.item-img img').each(function () {
        var img = $(this);
        let imageUrl = img.attr('data-original')

        // 发起 HTTP 请求并下载图片
        http.get(`http://${imageUrl}`, function (response) {
            const imagePath = `${destinationFolder}${img.attr('title').replace(/\s/g, '')}.png`;

            const fileStream = fs.createWriteStream(imagePath);
            response.pipe(fileStream);

            fileStream.on('finish', function () {
                fileStream.close();
            });
        });
    })
})  

注意:

上述中imagePath存放目录是不允许有空格或者其他特殊符号的,所以我用正则进行清除replace(/\s/g, '')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/880323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

yolov8训练进阶:自定义训练脚本,从配置文件载入训练超参数

yolov8官方教程提供了2种训练方式,一种是通过命令行启动训练,一种是通过写代码启动。 命令行的方式启动方便,通过传入参数可以方便的调整训练参数,但这种方式不方便记录训练参数和调试训练代码。 自行写训练代码的方式更灵活&am…

0基础学习VR全景平台篇 第84篇:智慧眼-权限如何设置?

一、功能说明 指智慧眼项目在运行的整个过程中,相关成员所需要用到的一系列操作权利:如提交(问题)、审核、整治、驳回、撤销、成员管理、查看数据、导出数据等等,这些都可以称为权限。权限需要通过后台先创建出来&…

item_get_sales-获取TB商品销量详情

一、接口参数说明: item_get_sales-获取商品销量详情,点击更多API调试,请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/taobao/item_get_sales 名称类型必须描述keyString是调用key&#xff08…

消防态势标绘工具,为消防基层工作助力

背景介绍 无人机测绘技术在消防领域的应用越来越普及,高清的二维正射影像和倾斜摄影实景三维模型能为消防态势标绘提供高质量的素材,消防队急需一个简便易用的、能够基于这些二三维的高清地图成果进行态势标绘的工具软件,使得消防“六熟悉”…

读《芯片浪潮》,学习台积电张忠谋的管理之道

大家知道,台积电一个公司就占据了全球晶圆代工市场一半的份额。 5纳米及以下最先进工艺的芯片,台积电可占到惊人的90%以上的市场。全球最新最强的智能手机、笔记本电脑的核心计算芯片都必须仰仗台积电一个企业的供应。 换一个说法,如果没有…

NeMo 中文ASR话者分离(说话人日志)实战

话者分离或者叫说话人日志,主要是解决说话人什么时候说了什么的问题。典型的应用场景:多人会议、坐席销售/客服场景。 典型的实现过程是基于管道。 首先基于VAD(声音活动检测)的MarbleNet,分割声音片段,然后基于TitaNet-L提取话者特征,然后通过聚类区分话者,最后通过神…

探寻Pytest的重难点:挑战与突破

Pytest作为Python社区中广受欢迎的测试框架,以其简洁优雅的语法和强大的功能,成为了许多开发者的首选。然而,在使用Pytest的过程中,我们不可避免地会遇到一些重难点,这些挑战也正是我们不断学习和成长的机会。本文将带…

成功将虚拟机映射到局域网,小伙伴都可以访问

一、添加入站规则 这张是添加所要映射端口的入站规则的图片,在此之前已将所有防火墙已关闭 如果没关就看下边的防火墙属性 二、添加虚拟机映射 添加之后,这里有个应用点一下,让NAT重启。 三、测试 等NAT 重启完成后比如你iP是182.1.1.1 …

当速度很重要时:使用 Hazelcast 和 Redpanda 进行实时流处理

在本教程中,了解如何构建安全、可扩展、高性能的应用程序,以释放实时数据的全部潜力。 在本教程中,我们将探索 Hazelcast 和 Redpanda 的强大组合,以构建对实时数据做出反应的高性能、可扩展和容错的应用程序。 Redpanda 是一个流…

SOLIDWORKS PDM—文件版本的管控

SOLIDWORKS产品数据管理 (PDM) 解决方案可帮助您控制设计数据,并且从本质上改进您的团队就产品开发进行管理和协作的方式。使用 SOLIDWORKS PDM Professional,您的团队能够:1. 安全地存储和索引设计数据以实现快速检索;2. 打消关于…

4WRZ25E3-220-5X/6A24NZ4/D3M不带位移反馈比例阀放大器

该先导阀是一个由比例电磁铁控制的三通减压阀,它的作用是将一个输入信号转化为一个与其成比例的压力输出信号,可用于所有的4WRZ...和5WRZ...型比例阀的控制。比例电磁铁是可调试,湿式直流电磁铁结构,带中心螺纹,线圈可…

淘宝搜索店铺列表API:关键字搜索店铺信息 获取店铺主页 店铺所在地 服务评级

接口名称:item_search_seller 基本功能介绍 该API可以通过传入关键字,获取到淘宝商城的店铺列表,支持翻页显示。指定参数page获取到指定页的数据。返回的店铺信息包括:店铺名、店铺ID、店铺主页、宝贝图片、掌柜名字、店铺所在地…

照明灯具哪个品牌好?护眼台灯该怎么选

现在儿童近视率越来越高了,用眼过度疲劳是导致近视的主要因素,学习环境的光线是否合适,都会直接影响用眼的疲劳程度。所以给孩子营造一个良好的学习环境非常重要!一款护眼台灯可以很好的预防近视,为大家推荐五款护眼台…

探索数字孪生的数据之美:实时、多源、多维的未来

在数字孪生的世界里,数据不再是孤立的数字,而是构成了一个真实、动态的虚拟映像,其独特的特点为现代社会带来了前所未有的机遇。 首先,数字孪生的数据特点之一是实时性。在制造业中,数字孪生可以通过实时传感器数据&am…

4WRAP6W7-08-30=G24K4/M=00比例先导阀控制放大器

先导控制阀是直动式比例阀。控制边的尺寸经过优化,可用作比例方向阀型号 4WRKE 的先导控制阀。 比例电磁铁为带可拆卸线圈的耐压密闭型湿式插脚交流线圈。 它们可将电流按比例转换为机械力。电流强度的增加会导致磁力相应增加。设定的磁力会在整个控制行程中保持不…

华为AI战略的CANN

基于TVM的华为昇腾体系中—— 异构计算架构(CANN)是对标英伟达的CUDA CuDNN的核心软件层,向上支持多种AI框架,向下服务AI处理器,发挥承上启下的关键作用,是提升昇腾AI处理器计算效率的关键平台 主要包括有…

Java SpringBoot Vue ERP系统

系统介绍 该ERP系统基于SpringBoot框架和SaaS模式,支持多租户,专注进销存财务生产功能。主要模块有零售管理、采购管理、销售管理、仓库管理、财务管理、报表查询、系统管理等。支持预付款、收入支出、仓库调拨、组装拆卸、订单等特色功能。拥有商品库存…

【网络基础】应用层协议

【网络基础】应用层协议 文章目录 【网络基础】应用层协议1、协议作用1.1 应用层需求1.2 协议分类 2、HTTP & HTTPS2.1 HTTP/HTTPS 简介2.2 HTTP工作原理2.3 HTTPS工作原理2.4 区别 3、URL3.1 编码解码3.2 URI & URL 4、HTTP 消息结构4.1 HTTP请求方法4.2 HTTP请求头信…

虹科干货 | 化身向量数据库的Redis Enterprise——快速、准确、高效的非结构化数据解决方案!

用户期望在他们遇到的每一个应用程序和网站都有搜索功能。然而,超过80%的商业数据是非结构化的,以文本、图像、音频、视频或其他格式存储。Redis Enterprise如何实现矢量相似性搜索呢?答案是,将AI驱动的搜索功能集成到Redis Enter…

聊聊计算机技术

目录 1.计算机的概念 2.计算机的发展过程 3.计算机的作用 4.计算机给人类带来的福利 1.计算机的概念 计算机是一种用于处理和存储数据的电子设备。它能够执行各种操作,比如计算、逻辑操作、数据存储和检索等。计算机由硬件和软件两部分组成。 计算机的硬件包括中…