首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >木偶人querySelector返回null

木偶人querySelector返回null
EN

Stack Overflow用户
提问于 2018-06-03 14:53:32
回答 2查看 26.5K关注 0票数 5

我试图用puppeteer删除一些数据,但对于某些站点,querySelector返回null,我不知道哪里出了问题。我在stackoverflow中找到了一些关于这个问题的答案,但都没有奏效。下面的代码包含一个不起作用的示例链接。

代码语言:javascript
复制
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.goto('https://www.macys.com/shop/product/the-north-face-mens- 
    logo-half-dome-t-shirt?ID=2085687&CategoryID=30423&cm_kws=2085687');

    const textContent = await page.evaluate(() => {
    return document.querySelector('.price');
});

console.log(textContent); 

browser.close();
})();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-06 09:06:09

在对页面进行快照后,发现我的请求被机器人检测系统阻塞。以下是解决方案。我们只需要传递更多的数据,这样它就不会被检测为机器人。如果它仍然不能工作,你可以查看this tutorial

代码语言:javascript
复制
const puppeteer = require('puppeteer');

// This is where we'll put the code to get around the tests.
const preparePageForTests = async (page) => {

// Pass the User-Agent Test.
const userAgent = 'Mozilla/5.0 (X11; Linux x86_64)' +
  'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.39 Safari/537.36';
await page.setUserAgent(userAgent);
}


(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await preparePageForTests(page);

 // await page.setRequestInterception(true);
 await page.goto('websiteURL');

 const textContent = await page.evaluate(() => {
   return {document.querySelector('yourCSSselector').textContent,
 }
 });
  console.log(textContent);

  browser.close();
票数 4
EN

Stack Overflow用户

发布于 2018-06-04 16:14:00

这些元素可能是通过javascript异步加载的,并且在调用.evaluate()时仍然不在DOM中。

尝试等待具有木偶剧.waitForSelector函数的选择器

代码语言:javascript
复制
const puppeteer = require('puppeteer');

(async () => {
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

await page.goto('https://www.macys.com/shop/product/the-north-face-mens- 
logo-half-dome-t-shirt?ID=2085687&CategoryID=30423&cm_kws=2085687');

await page.waitForSelector('.price');

const textContent = await page.evaluate(() => {
   return document.querySelector('.price');
});

console.log(textContent); 

browser.close();
})();
票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50663992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档