【问题标题】:Detect URL in txt检测 txt 中的 URL
【发布时间】:2019-10-30 03:33:35
【问题描述】:

我有带有 url 的 txt 文件。如何将此网址分开以在 js 代码中使用它们?我正在尝试使用 .split(/\n\t/g)

   let sites = await readFile('./sites.txt');
    sites = sites.split(/\n\t/g);

    await context.overridePermissions(sites, ['notifications']);
    try {
        await context.overridePermissions(sites, ['push']);
    } catch (e) {}

【问题讨论】:

  • 答案很大程度上取决于文档本身的格式。你能给我们一个文件是什么样子的sn-p吗?
  • 如果您使用的是 node.js,您可能正在寻找 fs 模块中的 readFile 函数。除非你在别处定义了它,否则readFile 不是原生函数。

标签: javascript node.js


【解决方案1】:

您应该注意 3 件事:

  1. NodeJS fs.readFile 不适用于 await / 开箱即用的承诺
  2. fs.readFile 给你一个Buffer,而不是一个字符串,除非指定了编码(例如'utf8'):
fs.readFile('./sites.txt', 'utf8', callback);
  1. 如果您的文件仅包含 URL(每行一个 url),您可以用换行符分隔(如 \n),但您必须记住,不同平台在文本文件中以不同方式保存新行 - 在 Unix 上只是 \n,在 Windows 上:\r\n

所以你的代码可能看起来像:

const fs = require('fs');

fs.readFile('./sites.txt', 'utf8', (err, content) => { 
  if (err) {
    console.error(err); 
    return;
  } 
  const urls = content.split('\n');
  // do sth with urls
});

如果你想使用 await 或 promise 模式,你可以例如 promisify fs.readFile:

const util = require('util');
const readFile = util.promisify(fs.readFile);

然后在你的异步函数中:

async function getURLs() {
  const content = await readFile('./sites.txt', 'utf8');
  return content.split('\n');
}

【讨论】:

  • 我有所有这些需求者,异步函数等。我需要在 .txt 文件中找到 (https://xxx.com https://ccc.com https://vvv.com) url并在下面的代码中使用它:await page.goto("my url here", { waitUntil: "networkidle2" });
  • function getURLs() 在我的例子中应该返回一个url数组
  • 您的“./sites.txt”是否仅包含 URL - 每行一个?
  • 你能在你原来的问题中添加一些'./sites.txt'的内容吗?
猜你喜欢
  • 2022-12-05
  • 2018-02-25
  • 2019-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多