url - page.click 不是函数

标签 url click puppeteer

您好,我有以下代码,但出现错误,指出 sublink.click 不是函数。 我试图从页面获取 URL(我做到了),然后单击每个 URL,并在这些 URL 内获取其他信息。有人可以帮助我吗?

'use strict';
const puppeteer = require('puppeteer');

crawlPage();

function crawlPage() {
  (async () => {

    const args = [
      "--disable-setuid-sandbox",
      "--no-sandbox",
      "--blink-settings=imagesEnabled=false",
    ];
    const options = {
      args,
      headless: true,
      ignoreHTTPSErrors: true,
    };

    const browser = await puppeteer.launch(options);
    const page = await browser.newPage();
    await page.goto("https://www.guiadacarreira.com.br/profissao/lista-de-profissoes/", {
      waitUntil: 'networkidle2',
      timeout: 30000
    });

    let hrefs = await page.$$eval('a', as => as.map(a => a.href));
    console.log("DOID");

    // peguei os urls




    //let's click on each sub click
    for (let sublink of hrefs) {
      console.log('██AAA');

      const [response] = await Promise.all([
        page.waitForNavigation(),
        sublink.click('guia', {delay: 100}),
      ]);
      console.log('██BBB');

      const resultado = await sublink.evaluate(() => {
        return document.querySelector("body > div.container.gc-master-container > div:nth-child(3) > main > article > div.gc-post-body").firstChild.value;
      });
      // await page.goBack() 
      break;
    }


  })().catch((error) => {
    console.error(error);
  });;

}

最佳答案

它不会单击并返回 sublink.click 不是函数,因为 sublink 是包含 url 的字符串。在 let hrefs = wait page.$$eval('a', as => as.map(a => a.href)); 行中,您返回的是字符串数组,而不是要素。如果您想要拥有需要使用的元素,例如 let hrefElements = wait page.$$('a');

关于url - page.click 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63890774/

相关文章:

url - 使用相同的 URL 提供不同的页面

javascript - HtmlUnit按钮点击不提交

jQuery 统计点击次数,如何实现?

javascript - jquery append()不适用于动态添加的元素

ruby-on-rails-3 - 在Ruby on Rails 3中使用URL切换语言

php - 动态链接中无用的获取变量以改善 SEO

node.js - 如何使用 puppeteer 和 Node js 生成 pdf 页面的屏幕截图

javascript - 无法使用 Puppeteer 访问 innerText 属性 - .$$eval 和 .$$ 未产生结果 - JavaScript

javascript - 错误: invalid namespace puppeteer node js

node.js - 通过本地网络通过域名而不是 IP 地址连接到数据库时是否会产生大量开销?