Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/402.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery:.find()定位某些元素,但不定位其他元素_Javascript_Jquery_Html_Dom_Web Scraping - Fatal编程技术网

Javascript JQuery:.find()定位某些元素,但不定位其他元素

Javascript JQuery:.find()定位某些元素,但不定位其他元素,javascript,jquery,html,dom,web-scraping,Javascript,Jquery,Html,Dom,Web Scraping,我试图将glassdoor公司的评论作为练习,并尝试学习javascript和JQuery,以便使用puppeter。在我的脚本中,我尝试向控制台输出 审查摘要,以及 审查日期 (对于摘要和日期的html位置) 然而,由于某些原因,只有摘要会被打印到控制台,而日期则不会。我的代码有错误吗 const puppeteer = require("puppeteer"); const cheerio = require('cheerio'); // puppeteer usage as normal

我试图将glassdoor公司的评论作为练习,并尝试学习javascript和JQuery,以便使用
puppeter
。在我的脚本中,我尝试向控制台输出

  • 审查摘要,以及
  • 审查日期
  • (对于摘要和日期的html位置)

    然而,由于某些原因,只有摘要会被打印到控制台,而日期则不会。我的代码有错误吗

    const puppeteer = require("puppeteer");
    const cheerio = require('cheerio');
    
    // puppeteer usage as normal
    puppeteer.launch({ headless: false }).then(async browser => {
    
      const page = await browser.newPage();
    
      const navigationPromise = page.waitForNavigation();
    
      await page.setViewport({ width: 1440, height: 794 })  ;
      await page.goto('https://www.glassdoor.com/Reviews/Grubhub-Reviews-E419089.htm');
    
      await navigationPromise;
    
      var data = [];
    
      const html = await page.content();
      const $ = cheerio.load(html);
    
      $(".hreview").each(function() {
    
        console.log("\nMain scraping function happening...")
    
        // This works
        console.log($(this).find("span.summary").text());
        // This does not work
        console.log($(this).find("time.date").text());
    
      });
    
    
      await browser.close();
    
    })
    

    如果没有你的html代码,那么很难说问题出在哪里。你能给我们一个你想刮的html的例子吗?很可能您的选择器不正确,但如果不访问外部站点,很难说。一个好的问题应该是独立的,所以你不需要访问外部资源来理解它;在chrome控制台中。它完美地输出了日期。因此jQuery find肯定没有问题。您必须验证加载的html中是否存在此元素。您是否查看了保存在
    html
    变量中的dom?日期是否在
    .hreview
    下?如果不是,则在最初加载html页面之后,通过javascript在实际页面加载之后加载,因此您需要在Puppeter中执行
    waitForFunction
    ,该函数在glassdoor站点中通过js设置日期后计算为true。请看这里的例子:也就是说,如果有一个独立的问题,而不是引用一个可能会改变的外部站点,那就太好了。试试console.log(html),看看元素是否存在。如果没有html代码,那么很难说问题出在哪里。你能给我们一个你试图抓取的html示例吗?很可能您的选择器不正确,但如果不访问外部站点,很难说。一个好的问题应该是独立的,所以你不需要访问外部资源来理解它;在chrome控制台中。它完美地输出了日期。因此jQuery find肯定没有问题。您必须验证加载的html中是否存在此元素。您是否查看了保存在
    html
    变量中的dom?日期是否在
    .hreview
    下?如果不是,则在最初加载html页面之后,通过javascript在实际页面加载之后加载,因此您需要在Puppeter中执行
    waitForFunction
    ,该函数在glassdoor站点中通过js设置日期后计算为true。请看这里的例子:也就是说,如果有一个自包含的问题,而不是引用一个可能会更改的外部站点,那将非常好。请尝试console.log(html)并查看元素是否存在。