我正在使用cheerio做一些抓取并想要访问页面上的head js元素(特别是instructables)。我可以访问它,但它作为功能返回。
所以使用这个:
console.log($('script').attr('type', "application/ld+json").text);
这提供了'功能'
我认为strinify会起作用但不会:(
答案 0 :(得分:6)
这是因为$("script").attr("type","application/ld+json");
返回一个脚本标记数组(页面上只有一个脚本标记)并且它还会更改页面的所有脚本标记的类型到application/ld+json
See JQuery .attr() documentation.
如果你需要获得具有该类型的那个$("script[type='application/ld+json'")
,那就可以了。
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);
}
}
}
}
});