如何使用nodejs在Web抓取中指定类选择器

时间:2012-04-02 13:09:18

标签: node.js web-scraping jsdom

尝试使用nodejs实现抓取。我正在向特定网址发送请求,当我收到响应时,使用响应将网页中的每个产品存储到一个数组中。对于每个产品我都试图显示产品详细信息,如产品名称,价格和折扣等。我是通过以下代码执行此操作。

var $products = $body.find('.fashion-item');
$products.each(function (i, item) {
    var $name = ($(item).find('.info .title').text(),
        $price=$(item).find('span.price.regular').text().substr(6),
        $discount=$(item).find('span.price.percentoff').text().slice(0,2);
    self.items[i] = {
        title: $name,
        price: $price,
        discount: $discount,
    };
});
console.log(self.items);

工作正常。如果类名称类似于'fashion-item'或'fashion-item-first',那么这一切都可以。但是如果类名包含单词之间的空格,则不会将任何产品存储在数组($ products)中,即$ products的数组长度为零。我的问题是如果类名如此'fashion-item first',如何做同样的事情。我尝试了很多,但我没有想到。请帮帮我。

2 个答案:

答案 0 :(得分:1)

班级名称不能包含空格。在您的示例中,'fashion-item first'是分配给元素的两个类,可以由.fashion-item.first选择器选择。

答案 1 :(得分:0)

如果您想要同时拥有info和title classe的项目,请选择以下内容:

$(item).find('.info.title')

如果您想要其中一个类,请使用此

$(item).find('.info,.title)