【问题标题】:How add const to await page.$x in puppeteer Node.js? Const in xpath如何在 puppeteer Node.js 中将 const 添加到 await page.$x? xpath 中的常量
【发布时间】:2021-12-11 22:11:19
【问题描述】:

我想将 cont 添加到 href 链接。我想使用常量。我遇到了问题:

const klik2 = await page.$x("//a[contains(@href, 'p2')]");

我要添加

const new = 'p' + [i];

现在'p2'在哪里。如何正确操作?

我的实际代码:

const puppeteer = require('puppeteer');

(async () => {

const browser = await puppeteer.launch({headless: false});
const page = await browser.newPage();
await page.setDefaultNavigationTimeout(0);
await page.goto("http://mypage.test/");
for (let i = 1; i < 100; i++) {
const link = 'p' + [i];
try {

const klik2 = await page.$x("//a[contains(@href, link)]");
await klik2[0].click();

} 抓住{

   console.log(e);    

}

   await page.goto("http://mypage.test/");


})();

也尝试过这样的事情:

const klik3 = "'" + 'p1' + "'";
const klik = '"//a[contains(@href,' + klik3 + ')]"';
console.log(klik);
const klik2 = await page.$x(klik);
await klik2[0].click();

【问题讨论】:

  • 我不确定你在问什么。 i 是什么?通常连接字符串和数组是没有意义的。
  • 我要使用 " for (let i = 1; i
  • 您能否编辑帖子以包含该代码并显示您正在使用的页面。你想得到什么数据?你的意思是for (let i = 1; i &lt; 10; i++) { const link = `p${i}`; } 还是"p" + i?同样,我不确定您为什么要将 i 放在单个元素数组中。
  • 每个链接都包含p+数字,第一个元素包含p1,第二个包含p2,第三个p3。

标签: web-scraping xpath puppeteer href contains


【解决方案1】:

您可以使用template literals (template strings)。此外,您的连接中似乎不需要数组(此处:const link = 'p' + [i];

const link = 'p' + i;
try {
  const klik2 = await page.$x(`//a[contains(@href, '${link}')]`);
  await klik2[0].click();
}

【讨论】:

  • 如果有人想知道,它是区分大小写的
猜你喜欢
  • 1970-01-01
  • 2020-08-17
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
相关资源
最近更新 更多