我正在使用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
答案 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