0

nodejsを使用してスクレイピングを実装しようとしています。特定の URL に要求を送信しています。応答を取得したら、応答を使用して、ページ内の各製品を配列に格納しています。各製品について、製品名、価格、割引などの製品の詳細を表示しようとしています。これは次のコードで実行しています。

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 の配列の長さはゼロです。私の質問は、クラス名がこの「ファッションアイテムファースト」の場合、同じことを行う方法です。私はとても試してみましたが、私にはわかりませんでした。私を助けてください。

4

2 に答える 2

1

クラス名にスペースを含めることはできません。あなたの例では'fashion-item first'、 は要素に割り当てられた 2 つのクラスであり、.fashion-itemまたは.firstセレクターで選択できます。

于 2012-04-02T17:52:51.470 に答える
0

info と title classe の両方を持つアイテムが必要な場合は、次のように選択します。

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

これらのクラスのアイテムが必要な場合は、これを使用してください

$(item).find('.info,.title)
于 2012-04-02T19:17:11.740 に答える