[英]Building a simple Node.js scraper function
我尝试为nodeJS构建一个非常简单的scraper函数 - 只是一个可以传递URL的函数,它将被删除的数据作为var data
返回。
我是Node.js的新手,无法理解为什么以下不起作用:
var request = require('request');
var cheerio = require('cheerio');
function scrape(url) {
console.log("Scraping: " + url);
request(url, function(err, resp, body) {
if (err) {
throw err;
}
var html = cheerio.load(body);
return html;
});
}
var data = scrape('http://www.stackoverflow.com');
$ = data;
var logo = $('#hlogo a').text();
console.log(logo);
上面的代码应该返回"Stack Overflow"
但显然不会。 当我在控制台中运行它时,我收到一个错误:
var logo = $('#hlogo a').text();
^
TypeError: Property '$' of object #<Object> is not a function
任何想法为什么这对我不起作用?
您的data
将是未定义的,因为scrape
函数不返回值,另外它是异步的。
您需要将逻辑更改为以下内容:
function scrape(url, oncomplete) {
console.log("Scraping: " + url);
request(url, function(err, resp, body) {
if (err) {
throw err;
}
var html = cheerio.load(body);
oncomplete(html);
});
}
scrape('http://www.stackoverflow.com', function(data) { /* do work here*/ });
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.