2017-02-10 8 views
0

私はScrapyを使用して単純なスクレーパーを構築していますが、データの特定の部分を抽出する際に問題があります。ウェブサイトでは、約20以下のコードブロックのが含まれています分割からテキストを抽出する治療

<div class="row result"> 
    <div class="updateCont date col-md-2 col-sm-2 col-xs-3"> 
     <span>  
      <strong>Fri. 10 Feb</strong> <br />0:00 AM 
     </span> 
    </div> 
    <div class="updateCont eventIcon col-md-1 col-sm-1 col-xs-3"> 
     <div class="icon "> 
      <i class="fa fa-update"></i> 
     </div> 
    </div> 
    <div class="updateCont event col-md-9 col-sm-8 col-xs-6"> 
     <span> 
       The buyer has been notified of this update. <br /> 
       <span class="inner department"> 
        124 
       </span> 
     </span> 
    </div> 
</div> 

私はこれらのそれぞれを抽出するために管理している:私は今、日付を隔離し、に変換したい

sel = Selector(text=response.body) 
updates = sel.xpath("//div[@class='row result']") 

datetimeオブジェクトとupdateContイベント文字列を返します。 このアップデートの購入は、に通知されています。

私が試した:私はプリントアウトした場合、私はそれがよりworringly 3であることを期待していた7になり

for update in updates: 
     date = update.xpath('//span').extract() 
     print (len(date)) 

は、ちょうどそれが三回同じデータをプリントアウト日付。私はhtmlで3つの別々のものがあるので、データの3つの異なるロットを期待していた。

sel = Selector(text=response.body) 
updates = sel.xpath("//div[@class='row result']") 

部分を分離するための正しいコードですか?スパンを抽出する最良の方法は何でしょうか?

答えて

-1
In [19]: for update in updates: 
    ...:   spans = update.xpath('//span') 
    ...:   for span in spans: 
    ...:    text = span.xpath('normalize-space()').extract_first() 
    ...:    print(text) 
    ...:    
    ...:  

アウト:

Fri. 10 Feb 0:00 AM 
The buyer has been notified of this update. 124 
124 

使用.は、現在のノードにそれが働いたことのために

+0

感謝し、それを単離することができます。小さな問題は今は '金です。 10 Feb
0:00 AM'は、強いタグ内のビットではなく、0:00 AMのみを抽出します。 –

+0

私はまだ強いタグのビットを取得していません。一度それが完全に動作したら、私はもちろん答えを受け入れます。 –

関連する問題