Javascript Cheerio-网页抓取-无法抓取div的内部文本
我正在使用Cheerio和request进行网页抓取。 下面是我正在运行的代码,它没有给出任何错误,但也没有给出具有该类名的div的innerText 我是这项技术的初学者。所以我无法找出我遗漏了什么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
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那样工作,因为中断被保留。看那边