码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 用nodejs爬虫台湾痞客邦相册


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

    使用方法

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

    1. /**
    2. * 2023年10月23日 22:58:44
    3. * 支持解析痞客邦相册
    4. * 只需要复制相册第一张图片的url就行* *
    5. * */
    6. const axios = require('axios');
    7. const cheerio = require('cheerio');
    8. const fs = require('fs');
    9. const path = require('path');
    10. const https = require('https');
    11. let i = 0 //计算照片数量
    12. // 示例用法 替换为您要解析的相册地址第一张图
    13. let url = 'https://用户id.pixnet.net/album/photo/100898948#after=100899621'
    14. //默认延迟时间, 爬太快我怕出问题
    15. let delay = 3000
    16. //获取图片和下一个网页函数
    17. async function parseImgTags(url) {
    18. try {
    19. const response = await axios.get(url);
    20. const html = response.data;
    21. const $ = cheerio.load(html);
    22. ++i;
    23. let src = $('#item-frame-img').attr('src')
    24. console.log(`解析到第${i}张图片`, src);
    25. let nextlink = $('.item-frame .photolink').attr('href')
    26. console.log('结果是,', nextlink)
    27. //解析到然后保存本地
    28. await saveImageToLocal(src)
    29. setTimeout(() => {
    30. parseImgTags(nextlink)
    31. }, delay);
    32. return nextlink
    33. } catch (e) {
    34. console.log('出了点问题')
    35. return ''
    36. }
    37. }
    38. //调用函数
    39. parseImgTags(url)
    40. .then(nextlink => {
    41. console.log('有下一个', nextlink)
    42. return
    43. })
    44. .catch(error => {
    45. console.error('Error:', error);
    46. });
    47. async function saveImageToLocal(imageUrl) {
    48. // 获取图片文件名
    49. const filename = path.basename(imageUrl);
    50. // 检查目录是否存在,如果不存在则创建
    51. const dir = path.join('.', 'image');
    52. if (!fs.existsSync(dir)) {
    53. fs.mkdirSync(dir);
    54. }
    55. // 构造本地文件路径
    56. const localPath = path.join(dir, filename);
    57. // 下载图片并保存到本地文件系统中
    58. const file = fs.createWriteStream(localPath);
    59. return new Promise((resolve, reject) => {
    60. https.get(imageUrl, response => {
    61. response.pipe(file);
    62. file.on('finish', () => {
    63. file.close(resolve);
    64. });
    65. }).on('error', error => {
    66. fs.unlink(localPath, () => {
    67. reject(error.message);
    68. });
    69. });
    70. });
    71. }

  • 相关阅读:
    一个QT程序无法启动问题的分析与解决
    我凭这个引流套路做到月入10万+,你也可以(瞎编的)
    HBase表的RowKey设计、热点和二级索引
    AndroidStudio设计登录页源码(音悦app)
    微信公众号菜单管理接口开发
    线程池的异常处理机制
    二叉树类题目 力扣
    《Learning Hierarchical Modular Networks for Video Captioning》论文笔记
    LabVIEW学习笔记五:错误,visa关闭超时(错误-1073807339)
    【JavaWeb】Servlet系列 --- 使用纯Servlet做一个单表的CRUD操作(oa小项目,超详细笔记)
  • 原文地址:https://blog.csdn.net/Madman528/article/details/134001856
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号