由于$不是函数,我收到错误

时间:2016-09-29 05:50:17

标签: jquery node.js web screen-scraping

var request = require("request"),
cheerio = require("cheerio"),
fs=require("fs"),
urls ,
url = "http://www.w3schools.com/";
request(url, function (error, response, body) {
if (!error && response.statusCode==200) {
 var $ = cheerio.load(body).html();
    var teli = $('a.w3schools-logo').html();
    console.log(teli);
  } 
 });

我收到错误

TypeError: $ is not a function
 at Request._callback (C:\Users\AMIT\Desktop\project\demo.js:9:14)   
 at Request.self.callback (C:\Users\AMIT\Desktop\project\node_module   \request\request.js:187:22)
 at emitTwo (events.js:87:13)
 at Request.emit (events.js:172:7)
 at Request.<anonymous> (C:\Users\AMIT\Desktop\project\node_modules\request\request.js:1048:10)
 at emitOne (events.js:77:13)
 at Request.emit (events.js:169:7)
 at IncomingMessage.<anonymous> (C:\Users\AMIT\Desktop\project\node_modules\request\request.js:969:12)
 at emitNone (events.js:72:20)
 at IncomingMessage.emit (events.js:166:7)

请帮助我为此错误做些什么

2 个答案:

答案 0 :(得分:3)

根据the cheerio page,加载它的正确方法是:

var $ = cheerio.load(body); // <-- note no .html()!

调用.html()将主体作为HTML字符串返回,这可能不是您打算做的。相反,只需将其删除即可获得jQuery实例$

答案 1 :(得分:0)

您需要在加载正文后调用html()函数,如下所示

var request = require("request"),
cheerio = require("cheerio"),
fs=require("fs"),
urls ,
url = "http://www.w3schools.com/";
request(url, function (error, response, body) {
    if (!error && response.statusCode==200) {
        var $ = cheerio.load(body);
        var teli = $('a.w3schools-logo').html();
        console.log(teli);
    } 
 });