2012-04-02 11 views
0

nodejを使用してスクレイピングを実装しようとしていますか。特定のURLにリクエストを送信し、レスポンスを受け取ると、レスポンスを使用してページ内の各製品を配列に格納しています。各製品について、商品名、価格、割引などの商品詳細を表示しようとしています。これは次のコードで行います。nodejsを使用してWebスクレイピングでクラスセレクタを指定する方法

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'のようなものなら、これはうまくいきます。しかし、クラス名に単語の間のスペースが含まれている場合、array($ products)に格納されている商品がない、つまり$ productsの配列の長さはゼロです。私の質問は、このようなクラス名の場合、同じことをする方法です '最初のファッションアイテム'。私は非常に試しましたが、私は何の考えも得ていませんでした。私を助けてください。

答えて

1

クラス名にはスペースを使用できません。あなたの例では、'fashion-item first'は、要素に割り当てられた2つのクラスで、.fashion-itemまたは.firstセレクタによって選択できます。あなたが情報やタイトルクラッセの両方を持っているアイテムは、これでそれらを選択したい場合は

+0

はどうもありがとうございました使用しています。問題は解決された。 –

0

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

あなたはこれらのクラスの項目1をしたい場合は、この

$(item).find('.info,.title) 
関連する問題