我正在尝试抓网,但遇到了一些麻烦。该主体具有多个div,它们的类名为.details
。我正在尝试在这些div中获取HTML。
我的代码在下面,但它在控制台中记录了null
。我究竟做错了什么?
var url = "https://www.funko.com/products/all/categories/the-vault";
request(url, function(err, response, html) {
if (!err && response.statusCode == 200){
let $ = cheerio.load(html);
const tag = $('.details');
console.log(tag.html());
$('.details').each((i,element)=>{
console.log(element);
});
} else {
console.log(error);
}
});
答案 0 :(得分:0)
您的代码没问题。您尝试抓取的网站通过AJAX请求请求了很多信息,因此最初的https://www.funko.com/products/all/categories/the-vault
不会返回您要查找的内容。
如果将console.log(html)
添加到脚本中,您将看到预期版本的精简版,因为AJAX请求尚未运行。
答案 1 :(得分:0)
正如所指出的草图,cheerio在这里对您无济于事。
要获取商品数据,您需要先获取collection_id
:
$ curl -s 'https://www.funko.com/ui-api/cms/tables/collections/rows' | json -a data | json -c 'this.handle=="the-vault"' -a collection_id
199936515
然后使用ID,您可以获取所需的json数据:
$ curl -s 'https://www.funko.com/ui-api/search?page=1&limit=15&&collectionId=199936515' | json 'products[0]'
{
"id": "10883713155",
"title": "Pop! Marvel: Phoenix/Jean Grey",
"handle": "pop-marvel-phoenix-jean-grey",
"product_type": "Pop!",
"tags": "The Vault",
"image": {
"src": "https://cdn.shopify.com/s/files/1/0552/1401/products/Green_Phoenix_POP_CMYK_GLAM_grande_bd258ee0-0064-4573-ace4-111e01437590.jpg?v=1505506339"
},
"variants": [
{
"sku": "VAULTED"
}
]
}
(这些示例假定您已通过npm -g i json
安装了'json'cli util)