【问题标题】:Web Scraper (using puppeteer) only adding the first instance of the htmlWeb Scraper(使用 puppeteer)仅添加 html 的第一个实例
【发布时间】:2019-05-24 19:28:03
【问题描述】:

我的爬虫只接收第一个类/类名实例,而不是页面上的其余部分

我尝试过使用普通的 for 循环而不是 for-each,我认为这是因为 div 有一个唯一的类名,该类名会增加一个设定值。我尝试在循环中增加它,但无济于事。

const puppeteer = require("puppeteer");

const siteUrl = "https://toronto.iabc.com/about/pic/pic-member-list/";

(async () => {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  await page.setViewport({ width: 1920, height: 926 });
  await page.goto(siteUrl);

  //getting details of member list

  const siteData = await page.evaluate(() => {
    const pageData = [];
    //get page elements
    const pageElms = document.querySelectorAll(
      "body > div.site-container > div.site-inner > div > main > article"
    );
    let num = 3;

    //parse data from elements
    const scraper = pageElms.forEach(element => {
      let nextPerson = (num += 2);
      const pageJson = {};
      try {
        if (nextPerson > 50) {
          return pageData;
        }
        pageJson.name = element.querySelector(
          `body > div.site-container > div.site-inner > div > main > article > div > div:nth-child(${nextPerson}) > div:nth-child(1) > div`
        ).innerText;

        scraper();
      } catch (err) {
        console.log(err);
      }
      pageData.push(pageJson);
      console.log(pageData);
    });
    return pageData;
  });
  console.dir(siteData);
})();

最后,我应该能够通过一些调整来从这个列表中抓取每个人,以指定我想要抓取的选择器。

【问题讨论】:

  • 文章标签只有一个

标签: javascript html node.js web-scraping


【解决方案1】:

您分享的页面中只有一个文章标签。所以循环在这里没有意义。另外我建议你在问题中加上标记。

如果您将初始选择器更改为以下,我将定位到信息所在的行

 const pageElms = document.querySelectorAll(
      "body > div.site-container > div.site-inner > div > main > article > div > div.su-row"
    );

并使用

 pageJson.name = element.innerText;

您不需要生成 nextPerson,您将抓取所有数据

【讨论】:

  • 非常感谢!我绝对认为我花了太多时间思考这样简单的事情。
猜你喜欢
  • 1970-01-01
  • 2020-07-19
  • 2020-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-11
  • 2019-06-09
相关资源
最近更新 更多