Search code examples
jquerynode.jswebscreen-scraping

I am getting error as $ is not a function


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);
  } 
 });

i am getting error as

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)

please help what can i do for this error


Solution

  • According to the cheerio page, the correct way to load it is:

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

    Calling .html() returns the body as an HTML string, which is likely not what you intended to do. Instead, just drop it to get the jQuery instance $.