Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.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 Cheerio-网页抓取-无法抓取div的内部文本_Javascript_Web_Web Scraping_Cheerio_Crossdomain Request.js - Fatal编程技术网

Javascript Cheerio-网页抓取-无法抓取div的内部文本

Javascript Cheerio-网页抓取-无法抓取div的内部文本,javascript,web,web-scraping,cheerio,crossdomain-request.js,Javascript,Web,Web Scraping,Cheerio,Crossdomain Request.js,我正在使用Cheerio和request进行网页抓取。 下面是我正在运行的代码,它没有给出任何错误,但也没有给出具有该类名的div的innerText 我是这项技术的初学者。所以我无法找出我遗漏了什么 request(baseurl, function(err,resp,body) { if (!err && resp.statusCode == 200) { var $ = cheerio.load(body); $('div.class','#E

我正在使用Cheerio和request进行网页抓取。 下面是我正在运行的代码,它没有给出任何错误,但也没有给出具有该类名的div的innerText

我是这项技术的初学者。所以我无法找出我遗漏了什么

request(baseurl, function(err,resp,body) {
  if (!err && resp.statusCode == 200) {     
    var $ = cheerio.load(body);
    $('div.class','#EIGTDNC-d-W EIGTDNC-d-Lb EIGTDNC-d-S EIGTDNC-d-mb EIGTDNC-d-bc').each(function() {
      temp = this.attr('innerText');
      console.log(temp);
    });

    // send the message back to user
  }
  else {
    console.log('error:', err); 
    console.log('statusCode:', resp && resp.statusCode); 
  }
});
//dom closed

innerText不是此HTML元素的属性

尝试使用HTMLElement函数检索innerText值:

temp=this.text()。因此,如果它是dom节点,则为
this.innerText
;如果它是cherrio对象,则为
this.text()
,请注意行缩进以提高可读性。@PatrickEvans感谢您指出这一点。但我仍然无法获得具有该类名的div。我相当担心的是,是否在执行到达该语句之前加载了完整的dom。因为当我打印console.log(body)-->时,我得到的dom与实际页面的dom不同;它更多的是标题、脚本代码等。我安装的是NodeJS、Request、Cheerio,并在Windows上通过CMD运行它。我查看了从web上抓取的示例,以抓取div、para等,但在特定的网站URL上,这些示例似乎都不适用于我。如果您获得的html与实际访问该网站时看到的html不同,则该网站可能是通过javascript生成的,而仅通过普通ajax请求该网站是不够的。您将需要某种类型的中间件,如phatnomjs或类似的方法。有一个原因是它不像innerText那样工作,因为中断被保留。看那边