Node.js puppeteer-转换获取的href字符串

时间:2018-08-27 22:04:08

标签: javascript node.js puppeteer

我正在使用node.js和puppeteer来获取一些数据。 ...现在我要转换我的输出之一。而不是得到像这样的href:

控制台:

myURL/data/1344888/156999-18-1605-index.html    

所需的输出应具有以下结构:

myURL/data/1344888/156999181605/156999-18-1605.txt

如您所见……第一部分是相同的:

myURL/data/1344888/

...中间部分应该没有连字符,并且是最后一部分的第一部分:

                  /156999181605/

...以及最后一部分... -index.html应替换为.txt

                               /156999-18-1605.txt

这就是我获取原始href的方式:

const puppeteer = require('puppeteer');
const fs = require('fs-extra');

(async function main() {
  try {

    const browser = await puppeteer.launch({ headless: false })
    const page = await browser.newPage();

    await page.goto('myURL', {waitUntil: 'load'});

    const table = await page.waitForSelector('#formDiv > div > table');

    const link = await page.$('#formDiv > div > table > tbody > tr:nth-child(5) > td:nth-child(3) > a');
    const linkHref = await page.evaluate( link => link.href, link );

    console.log(linkHref);      

    ...


  } catch (e) {
    console.log('our error', e);
  }

})();

这怎么办?

控制台:

myURL/data/1344888/156999-18-1605-index.html    

所需的输出应:

myURL/data/1344888/156999181605/156999-18-1605.txt

1 个答案:

答案 0 :(得分:1)

您可以使用以下解决方案将原始URL转换为所需的格式:

const original_url = 'myURL/data/1344888/156999-18-1605-index.html';
const modified_url = original_url.replace( /(\d+-\d+-\d+-index.html)/, match => match.replace( /\D/g, '' ) + '/' + match.replace( '-index.html', '.txt' ) );

console.log( original_url ); // myURL/data/1344888/156999-18-1605-index.html
console.log( modified_url ); // myURL/data/1344888/156999181605/156999-18-1605.txt