用nodejs爬虫台湾痞客邦相册

情景:是这样的,我想保存一些喜欢的小伙伴的照片,一张张保存太慢了, 所以我写了个js,放在国外服务器爬,国内的自己解决~

使用方法

1.点相册随便一张, 复制url, 这张开始接下来的图片都会保存

/*** 2023年10月23日 22:58:44* 支持解析痞客邦相册* 只需要复制相册第一张图片的url就行* * *  */
const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');
const path = require('path');
const https = require('https');
let i = 0 //计算照片数量
// 示例用法 替换为您要解析的相册地址第一张图
let url = 'https://用户id.pixnet.net/album/photo/100898948#after=100899621'
//默认延迟时间, 爬太快我怕出问题
let delay = 3000
//获取图片和下一个网页函数
async function parseImgTags(url) {try {const response = await axios.get(url);const html = response.data;const $ = cheerio.load(html);++i;let src = $('#item-frame-img').attr('src')console.log(`解析到第${i}张图片`, src);let nextlink = $('.item-frame .photolink').attr('href')console.log('结果是,', nextlink)//解析到然后保存本地await saveImageToLocal(src)setTimeout(() => {parseImgTags(nextlink)}, delay);return nextlink} catch (e) {console.log('出了点问题')return ''}
}//调用函数
parseImgTags(url).then(nextlink => {console.log('有下一个', nextlink)return}).catch(error => {console.error('Error:', error);});async function saveImageToLocal(imageUrl) {// 获取图片文件名const filename = path.basename(imageUrl);// 检查目录是否存在,如果不存在则创建const dir = path.join('.', 'image');if (!fs.existsSync(dir)) {fs.mkdirSync(dir);}// 构造本地文件路径const localPath = path.join(dir, filename);// 下载图片并保存到本地文件系统中const file = fs.createWriteStream(localPath);return new Promise((resolve, reject) => {https.get(imageUrl, response => {response.pipe(file);file.on('finish', () => {file.close(resolve);});}).on('error', error => {fs.unlink(localPath, () => {reject(error.message);});});});
}

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

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

相关文章

新款模块上线实现SIP模块与扩拨电话之间打点与喊话功能 IP矿用电话模块SV-2800VP

新款模块上线实现SIP模块与扩拨电话之间打点与喊话功能 IP矿用电话模块SV-2800VP 一、简介 SV-2800VP系列模块是我司设计研发的一款用于井下的矿用IP音频传输模块,可用此模块打造一套低延迟、高效率、高灵活和多扩展的IP矿用广播对讲系统,亦可对传统煤…

嵌入式实时操作系统的设计与开发 (启动内核学习)

RTOS的引导模式 RTOS的引导是指将操作系统装入内存并开始执行的过程。 时间限制主要包括:系统要求快速启动和系统启动后要求程序能实时运行。 空间限制主要包括:Flash等非易失性存储空间限制和RAM等易失性存储空间限制。 通常不可能同时满足两种要求&a…

Linux 下安装配置部署MySql8.0

一 . 准备工作 MySQL安装包:在官网下载需要的版本,这里我用的版本是 MySQL 8.0.34 https://dev.mysql.com/downloads/mysql/ 本次linux机器使用的是阿里云ECS实例 二 . 开始部署 1. 将安装包上传至服务器 解压到当前文件夹 tar -zxvf mysql-8.0.34…

SAP HANA Time Zone设置

通常对于MINICHECK中检查出来的Timezone时区设置问题,可以通过以下方式进行修改 对于ABAP系统 修改HANA 参数即可 • indexserver.ini -> [global] -> timezone_default_data_client_name 000 • indexserver.ini -> [global] -> timezone_default_da…

蓝桥杯每日一题2023.10.21

后缀表达式 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 30分解法&#xff1a;要求出最大的结果就需要加的数越大&#xff0c;减的数越小&#xff0c;以此为思路简单列举即可 #include<bits/stdc.h> using namespace std; typedef long long ll; const int N 2e5 10…

微信小程序设计之主体文件app-json-pages

一、新建一个项目 首先&#xff0c;下载微信小程序开发工具&#xff0c;具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后&#xff0c;注册小程序账号&#xff0c;具体注册方法&#xff0c;可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

【2021集创赛】Digilent杯二等奖:基于FPGA的动态视觉感知融合的运动目标检测系统

杯赛题目&#xff1a;Diligent杯&#xff1a;基于FPGA开源软核的硬件加速智能平台 参赛组别&#xff1a;A组 设计任务&#xff1a; 利用业界主流软核处理器(仅限于Cortex-M系列及 RISC-V系列)在限定的DIGILENT官方FPGA平台上构建SoC片上系统&#xff0c;在 SoC中添加面向智能应…

Python数据挖掘 | 升级版自动查核酸

&#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初阶、C…

GoLong的学习之路(五)语法之数组

书接上回&#xff0c;上回书说到&#xff0c;循环语句&#xff0c;在go中循环语句的少了whlie这个关键词&#xff0c;但是与之for可以改这个改这个特点。并且在终止关键词中&#xff0c;又有标签可以方便&#xff0c;停止。这次说数组 文章目录 Array(数组)数组的初始化方法一方…

【golang】mysql默认排序无法实现 使用golang实现对时间字符串字段的排序

一、问题场景 1、mysql实现排序-性能低下 例如&#xff1a;某字段 finish_time 数据如下&#xff1a;6:13:27、 10:56:11、 21:56:11 会出现顺序如下的场景&#xff1a; 10:56:11、 21:56:11、6:13:27 二、解决方案 2、golang实现排序 package mainimport ("fmt"&…

计算机网络_03_tcp/ip四层模型

文章目录 1.为什么会有tcp/ip?2.tcp/ip是什么?3.为什么会有tcp/ip四层模型?4.tcp/ip四层模型介绍 1.为什么会有tcp/ip? 早期的计算机(计算机网络没有出现之前)几乎都是各自为战, 各种操作系统厂家百花齐放, 市面上的大部分计算机使用的都是不同的操作系统, 为每个人提供定…

git简介和指令

git是一个开源的的分布式版本控制系统&#xff0c;用于高效的管理各种大小项目和文件 用途&#xff1a;防止代码丢失&#xff0c;做备份 项目的版本管理和控制&#xff0c;可以通过设置节点进行跳转 建立各自的开发环境分支&#xff0c;互不影响&#xff0c;方便合并 在多终端开…

【1024纪念】来自AI的博客

六年的程序员之路&#xff1a;我们的成长与未来 今天&#xff0c;我们迎来了一个特殊的纪念日——程序员节。这个节日不仅是对我们程序员的致敬&#xff0c;也是对科技进步和创新的庆祝。在这个特别的日子里&#xff0c;我想回顾我们六年的程序员之路&#xff0c;以及展望未来…

【Javascrpt】比较,逻辑运算符

目录 比较运算符 逻辑运算符 &&(与&#xff09; ||&#xff08;或&#xff09; 两真&#xff08;||左侧为真&#xff0c;||右侧为真&#xff09; 两假&#xff08;||左侧为假&#xff0c;右侧为假&#xff09; 一真一假&#xff08;||一侧为假&#xff0c;另一侧为…

需要在 MySQL 服务器中监控的重要指标

MySQL是一个开源的关系数据库管理系统&#xff0c;它基于客户端-服务器模型运行&#xff0c;使用SQL作为其通信模式。它具有灵活性和可扩展性、高安全性、易用性以及无缝处理大型数据集的能力&#xff0c;由于其广泛的功能&#xff0c;MySQL 被用作数据库管理系统的一部分。 什…

coco格式转yolo格式,标注软件是旷世labelbee

注意&#xff0c;这只是把单一123.jpg.json文件转化为123.txt 并没有把整体的json文件转换 import json# 读取JSON文件 json_file_path rG:\bsh\dataset\flame_test_dataset\train\annotations\259.jpg.json with open(json_file_path, r) as json_file:data json.load(json…

ubuntu20.04运用startup application开机自启动python程序

运用startup application开机自启动python程序。在终端中输入gnome-session-properties,如果显示没有则先进行安装&#xff0c;sudo apt-get update 和sudo apt install StartupApplications(根据显示提示安装)。在显示程序中搜索startup&#xff0c;打开应用程序。 在程序目录…

【React Router】React Router学习笔记

React Router学习笔记 React Router1.什么是React Router?2.为什么要用React Router?3.基础3.1 路由配置3.2 路由匹配原理3.3 History3.3.1 browerHistory3.3.2 hashHistory3.3.3 createMemoryHistory3.3.4 实现示例 3.4 默认路由(IndexRoute)与IndexLink3.4.1 IndexRoute3.4…

爬虫爬取数据时怎么配置代理IP来精准导航分析大数据?

在这个数字盛宴中&#xff0c;每一刹那都充满了无数的信息流转。就像瀑布中的水滴&#xff0c;每一滴都承载着可能性。爬虫代理IP与穿云API就像是这场盛宴中的精准导航仪&#xff0c;帮助我们捕捉那些最有价值的信息滴点&#xff0c;确保在这个时代的快速迭代中&#xff0c;我们…

在使用了spring-cloud-starter-gateway后,为什么还会发生cors问题

//1.需要配置类 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.reactive.CorsWebFilter; import org.sp…