【发布时间】:2016-09-21 18:58:48
【问题描述】:
我正在尝试从 yelp 中抓取并附上下面的代码。我在将数据存储到数组时遇到问题。
这是我的代码:
...
var id, title, link, neighborhood, address, phone = [];
router.get('/', function(req, res, next) {
var cheerio = require('cheerio');
while (scrapepage) {
var options = {
uri: 'https://www.yelp.co.uk/search?find_desc='+find+'&find_loc='+city+''+'&start='+page,
transform: function (body) {
return cheerio.load(body);
}
};
page += 10;
rp(options)
.then(function ($) {
var json = { id: "", title : "", link : "", neighborhood : "", address : "", phone : ""};
$('.biz-name span').filter(function(){
var data = $(this).text();
console.log(data);
//title.push(data);
title_count++;
});
...
res.send('Check your console!')
})
.catch(function (err) {
// Crawling failed or Cheerio choked...
});
}
});
所以每当我尝试将数据推送到数组时,它都不起作用,一直在等待。如果我删除推送,它会控制所有数据。
我也尝试过使用 each 而不是过滤器,但没有运气。也试过手动放入数组索引,还是不行。我可以知道我在代码中做错了什么吗?
更新
我已经在页面顶部添加了这个。
var id, title, link, neighborhood, address, phone = [];
【问题讨论】:
-
title.push- 但您没有为title分配任何东西 - 该代码不应该与cannot get property push from undefined一起失败吗? -
我已经定义为 var title = [];
-
I have added this at the top of the page.但title仍未定义。只有phone被分配给一个新数组,所有其他变量都只是声明但没有初始化.. -
知道了。感谢您指出错误。
标签: javascript node.js express request cheerio