Reputation: 2220
Im using cheerio to do some scraping and want to access the head js element on a page (notably instructables). I can access it but it comes back as function.
So using this:
console.log($('script').attr('type', "application/ld+json").text);
this provides 'Function'
I thought strinify would work but it doesn't :(
Upvotes: 3
Views: 3408
Reputation: 2442
This is because $("script").attr("type","application/ld+json");
returns an array of script tags (there's more than only one script tag on the page) and it's also changing the type of all script tag of the page to application/ld+json
See JQuery .attr() documentation.
If you need to get the one with that type $("script[type='application/ld+json']")
will do the trick.
var request = require('request');
var cheerio = require('cheerio');
request('http://www.instructables.com/id/Making-an-online-Fish-Tank-webcam!/step3/Cut-the-project-box/', function (error, response, html) {
if (!error && response.statusCode == 200) {
var $ = cheerio.load(html);
var obj = $("script[type='application/ld+json']");
for(var i in obj){
for(var j in obj[i].children){
var data = obj[i].children[j].data;
if(data){
console.log(data);
}
}
}
}
});
Upvotes: 8