2017-04-02 10 views
2

下記のHTMLマークアップをご覧ください。 divのクラス名col-sm-7からコンテンツをプルするためにScrapyのxpathセレクタを使用するにはどうすればよいですか?Scrapy:ネストされたdiv(xpathセレクタ)でコンテンツを抽出する方法は?

私はこのテキストを抽出したい:私はこれを使用しようとした

<div class="pricing panel panel-primary"> 
    <div class="panel-heading">Infortrend Products</div> 
    <div class="body"> 
    <div class="panel-subheading"><strong>EonNAS Pro Models</strong></div> 
    <div class="row"> 
    <div class="col-sm-7"><strong>Infortrend EonNAS Pro 850X 8-bay Tower NAS with 10GbE</strong><br /> 
     <small>Intel Core i3 Dual-Core 3.3GHz Processor, 8GB DDR3 RAM (Drives Not Included)</small></div> 
    <div class="col-sm-3">#ENP8502MD-0030<br /> 
     <strong> Our Price: $2,873.00</strong></div> 
    <div class="col-sm-2"> 
     <form action="/addcart.asp" method="get"> 
     <input type="hidden" name="item" value="ENP8502MD-0030 - Infortrend EonNAS Pro 850X 8-bay Tower NAS with 10GbE (Drives Not Included)"> 
     <input type="hidden" name="price" value="$2873.00"> 
     <input type="hidden" name="custID" value=""> 
     <input type="hidden" name="quantity" value="1"> 
     <button type="submit" class="btn btn-primary center-block"><i class="fa fa-shopping-cart"></i> Add to Cart</button> 
     </form> 
    </div> 
    </div> 
    </div> 
    </div> 

インフォトレンドEonNASの10GbE

HTMLとプロ850X 8ベイタワーNASコマンドは動作しませんでした。

response.xpath('//div[@class="pricing panel panel-primary"]/div[@class="panel-heading"]/text()/div[@class="body"]//div[@class="panel-subheading" and contains(@style,'font-weight:bold')]/text()').extract_first() 
+0

このxpath式を試してください。// div [@clas s = "col-sm-7"]/strong/text() ' – vold

答えて

1

これを試してみてください:

print(response.xpath('//div[@class="col-sm-7"]//text()').extract()[0].strip()) 

または

print(response.xpath('//div[@class="col-sm-7"]/strong/text()').extract()[0].strip()) 

response.xpath('//*[@class="col-sm-7"]//strong//text()').extract() 

が、それはあなたが<strong>要素間のテキストを取得することができます:)

1

助けるこのような何かを願っています上記の両方の声明このような何か、あなたはこの内のすべての要素の間のテキストが//text()の要素の中<strong><small>タグ内に含めてDIV取得することができます

Infortrend EonNAS Pro 850X 8-bay Tower NAS with 10GbE 

elem_text = ' '.join([txt.strip() for txt in response.xpath('//div[@class="col-sm-7"]//text()').extract()]) 
print(elem_text) 

これになります

Infortrend EonNAS Pro 850X 8-bay Tower NAS with 10GbE Intel Core i3 Dual-Core 3.3GHz Processor, 8GB DDR3 RAM (Drives Not Included) 
関連する問題