我试图从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...
});
}
});
因此,每当我尝试将数据推送到数组时,它就不起作用,永远等待。如果我删除推送,它会调用所有数据。
我也试过用而不是过滤器,但没有运气。还试图手动放入数组索引,仍然无法正常工作。我可以在代码中知道我做错了什么吗?
更新
我已在页面顶部添加了此内容。
var id, title, link, neighborhood, address, phone = [];
答案 0 :(得分:0)
我不得不问问题在哪里初始化?我看到了声明,但没有告诉系统将标题初始化为数组。
试
...
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 title = [],
release, rating;
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...
});
}
});
没有初始化,系统必须经历一个确定参数类型和兼容性的过程,以确保它能够让您尽可能接近您所要求的。有时显式定义变量可以加快这一过程。
同样,你不应该使用title_count作为title.length将拥有元素的数量。
答案 1 :(得分:0)
push
无效until
将title
指定为数组类型
then(function ($) {
var title=[];
var release, rating;
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!')
})