gpt4 book ai didi

javascript - 构建一个简单的 Node.js 抓取功能

转载 作者:行者123 更新时间:2023-12-02 18:40:11 24 4
gpt4 key购买 nike

我正在尝试为 nodeJS 构建一个非常简单的抓取函数 - 只是一个我可以传递 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

有什么想法为什么这对我不起作用吗?

最佳答案

您的数据将是未定义的,因为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*/ });

关于javascript - 构建一个简单的 Node.js 抓取功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16912994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com