首页 > 其他分享 >01_微信公众号_话题_提取链接_一行一个

01_微信公众号_话题_提取链接_一行一个

时间:2023-04-04 19:11:06浏览次数:48  
标签:function 01 const string filePath 微信 return join 链接

nodejs cheerio 提取超链接

import { log } from "console";
import {
  readFileSync,
  readdirSync,
  lstatSync,
  createWriteStream,
  mkdirSync,
  statSync,
} from "fs";
import { basename, join, resolve } from "path";
import { load, CheerioAPI } from "cheerio";

const basePath = resolve(__dirname, "..");
const htmlPath = join(basePath, "html");
const outPath = join(htmlPath, "out");
try {
  exitsFolder(outPath);
} catch (e) {
  log(e);
}
// 读取文件夹,返回一个文件列表数组
const fileList = readdirSync(htmlPath);
const pureFileList = fileList.filter((file) => {
  return lstatSync(join(htmlPath, file)).isFile();
});

pureFileList.forEach((file) => {
  extractTopic(join(htmlPath, file));
});

function extractTopic(filePath: string) {
  const $: CheerioAPI = loadHtmlDom(filePath);
  const urlArr = extractLink($);
  const outFilePath = getOutFilePath(filePath);
  const writeStream = createWriteStream(outFilePath, "utf-8");
  urlArr.forEach((url) => {
    writeStream.write(url);
    writeStream.write("\n");
  });
  writeStream.end();
}

function loadHtmlDom(filePath: string): CheerioAPI {
  const htmlText = readFileSync(filePath, "utf-8");
  return load(htmlText);
}

function extractLink($: CheerioAPI) {
  const oLinkList = $(
    "#js_content_overlay > div.album.js_album_container.album-rich_media_area_primary_full > div > div.album__content.js_album_bd > ul li"
  );

  const linkArr: string[] = [];

  oLinkList.each((i, oLink) => {
    const url = $(oLink).attr("data-link");
    linkArr.push(url ? url : "");
  });

  return linkArr;
}

function exitsFolder(absPath: string) {
  try {
    statSync(absPath);
  } catch (e) {
    // 不存在文件夹,直接创建 {recursive: true} 这个配置项是配置自动创建多个文件夹
    mkdirSync(absPath, { recursive: true });
  }
}

function getCurDate() {
  const d_t = new Date();

  let year = d_t.getFullYear();
  let month = ("0" + (d_t.getMonth() + 1)).slice(-2);
  let day = ("0" + d_t.getDate()).slice(-2);
  let hour = d_t.getHours();
  let minute = d_t.getMinutes();

  // prints date & time in YYYY-MM-DD HH:MM:SS format
  return year + "年" + month + "月" + day + "日" + hour + "时" + minute + "分";
}

function getOutFilePath(filePath: string) {
  return join(
    outPath,
    getCurDate() + "_目录_" + basename(filePath).split(".")[0] + ".txt"
  );
}

标签:function,01,const,string,filePath,微信,return,join,链接
From: https://www.cnblogs.com/zhuoss/p/17284999.html

相关文章

  • Flask框架使用蓝图划分目录、g对象、使用数据库连接池链接数据库
    目录一、使用蓝图划分项目目录1.蓝图的介绍2.蓝图的使用二、介绍flask框架的g对象1.g对象是什么?2.使用代码再次解释g对象三、使用数据库连接池链接数据库1.引入数据库连接池的概念2.在flask框架中使用数据库连接池的步骤一、使用蓝图划分项目目录1.蓝图的介绍flask框架的目......
  • [BUUCTF]PWN-[OGeek2019]babyrop
      点进sub_80486BB   注意alarm()   注意buf是v1,输出数是a1,if嵌套strncmp frompwnimport*context(arch='i386',os='linux',log_level='debug')io=remote('node4.buuoj.cn',25522)#io=process('./babyrop'......
  • 【Spring】链接数据库
    添加Maven依赖:<!--spring-jdbc包--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.2.10.RELEASE</version>......
  • sqlserver2016安装参考链接
    参考连接1、SQLServer2016软件安装包和安装教程2、出现polybase要求安装的问题,参考如何安装polybase要求安装orcalejre7更新51或更高版本3、SQLServer提示:安装程序无法与下载服务器联系。请提供Microsoft机器学习服务器安装文件的位置注意:安装到实例配置的时候,默认实......
  • Git链接上游仓库
    技术背景在Git的操作过程中,一般的组织内部工作模式可以在同一个仓库上的master-develop-feature不同分支上进行开发,也有一些人和外部协作者会通过Fork到自己本地的仓库进行更新的方案。但是对于Fork仓库的更新有一个问题是,如果长期在自己本地更新,有可能会逐渐脱离原始的分支,甚至......
  • 使用内网穿透调试微信小程序
    随意购买一个,登陆后台,选择隧道管理下载客户端点击bat批处理文件输入隧道id回车即可进入微信小程序编程工具将这个勾给勾上,然后修改HTTP_REQUEST_URL即可创作不易,如果能够解决您的问题,请给我点个赞,谢谢......
  • 蓝图,g对象,数据库链接池
    flask蓝图使用blueprint翻译后称之为蓝图。作用是:用来划分目录​ 之前写项目的时候全在一个py文件内写flask项目。需要使用蓝图来划分目录。小型项目与大型目录都可以蓝图使用1导入蓝图类业务视图里fromflaskimportBlueprint2实例化得到蓝图对象业务视图里u......
  • golang CVE-2016-2183漏洞,https需要添加tls设置加密算法CipherSuites白名单,将弱加密算
    golangCVE-2016-2183漏洞,https需要添加tls设置加密算法白名单,将弱加密算法DES和3DES去掉。服务端样例代码packagemainimport("crypto/tls""fmt""net/http")funchandler(writerhttp.ResponseWriter,request*http.Request){fmt.Fprintf(wri......
  • 安装MYSQL_5.0/8.0教程(附数据库和客户端工具下载链接)
    1.Mysql5.7下载网盘下载(推荐):链接:https://pan.quark.cn/s/d98d2536f847提取码:kbyN 官网下载:mysql下载地址:https://dev.mysql.com/downloads/windows/installer/8.0.html跳转到上述页面,选择Archives(历史存档)选择版本-下载2.Mysql安装双击打开下载好的文件。以前安......
  • 软件著作权申请-注意事项(微信小程序)
    开发的硬件环境:PC电脑内存:8GCPU:i565003.2GHz硬盘:1T显卡:GTX1080ti运行的硬件环境:安卓手机开发该软件的操作系统:Windows10专业版软件开发环境/开发工具:UnityC#VisualStudio该软件的运行平台/操作系统:安卓操作系统5.0及以上软件运行支撑环境/支持软......