【问题标题】:Scraping of website through Puppeteer returns undefined通过 Puppeteer 抓取网站返回 undefined
【发布时间】:2020-10-07 05:17:56
【问题描述】:

我试图抓取 Myntra 网站。链接是here

我使用 Puppeteer 和 Node JS 来抓取它。它工作正常,目前我收到错误

Error: Evaluation failed: TypeError: Cannot read property 'textContent' of null
at __puppeteer_evaluation_script__:2:55

函数返回一个空对象。我在下面附上了我的代码。

const puppeteer = require('puppeteer');

(async () => {
  try {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();
    await page.goto('https://www.myntra.com/jeans/only/only-women-black-skinny-fit-mid-rise-low-distress-stretchable-cropped-jeans/10973332/buy');
    const body = await page.evaluate( () => {
     return document.querySelector('.pdp-price') ;
    });
    console.log(body);

    await browser.close();
  } catch (error) {
    console.log(error);
  }
})();

【问题讨论】:

    标签: javascript node.js web-scraping puppeteer


    【解决方案1】:

    似乎该站点正在阻止在user-agent 中指定HeadlessChrome 的请求,因此我更改了user-agent,现在一切正常。试试这个代码:

    const puppeteer = require('puppeteer');
    
    (async () => {
      try {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        await page.setExtraHTTPHeaders({
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36'
        });
        await page.goto('https://www.myntra.com/jeans/only/only-women-black-skinny-fit-mid-rise-low-distress-stretchable-cropped-jeans/10973332/buy');
        const body = await page.evaluate(() => {
            return document.querySelector('.pdp-price').textContent;
        });
        console.log(body);
        await browser.close();
      } catch (error) {
        console.log(error);
      }
    })();
    

    【讨论】:

    • 很高兴我的决定对您有所帮助。关于 cmets 中的感谢 - 您需要阅读 this help。谢谢你。
    【解决方案2】:

    某事正试图对null 的某事调用.textContent。我在您的示例中没有看到它,但如果像 querySelector('.pdp-price') 这样的代码没有找到任何东西 - 可能是因为页面尚未完全加载或选择器不匹配任何东西,就会发生这种情况。

    您可以通过other options to page.goto 使其等待更长的时间,这可以让事情加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-03
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多