2016-08-29 5 views
0

各行に2つのセル/列があるdivテーブルがあります。 2番目のセル/列にはクリアテキスト(<div class="something">Text</div>)が付いていることがありますが、時にはそれは<div class="something"><a href="url">Text</a></div>の "a"タグ内に隠されています。DIVまたは存在するコンテナ(存在する場合)からテキストを選択します。

今、私はリンクされたテキスト以外のすべてを得ることに問題はありません。私はリンクされたテキストを別々に取得することもできますが、すべてを一度に取得する方法がわからないので、データの3列を取得します。 1.最初の列のテキスト 2番目の列のテキストは、私は

ltitles = scrapy.Selector(response).xpath('//div[contains(concat(" ", normalize-space(@class), " "), " name ")]/a/text()').extract() 
for ltitle in ltitles: 
    print ltitle.strip() 

にリンクされたアイテムを取得することができます

times = scrapy.Selector(response).xpath('//div[contains(concat(" ", normalize-space(@class), " "), " time ")]/text()').extract() 
titles = scrapy.Selector(response).xpath('//div[contains(concat(" ", normalize-space(@class), " "), " name ")]/text()').extract() 
for time, title in zip(times, titles): 
    print time.strip(), title.strip() 

しかし、ドン」:いない、 3.リンク、それは

を存在する場合、すべてがリンクされていない抽出して動作するコードがありますtをどのように組み合わせるかを知っている彼はすべてを一緒にするために "照会"する。

<div class="programRow rowOdd"> 
    <div class="time ColorVesti"> 
         22:55 
    </div> 
    <div class="name"> 

         Dnevnik 

    </div> 
</div> 

<div class="programRow rowEven"> 
    <div class="time ColorOstalo"> 
         23:15 
    </div> 

    <div class="name"> 
    <a class="recnik" href="/page/tv/sr/story/20/rts-1/2434373/kulturni-dnevnik.html" rel="/ajax/storyToolTip.jsp?id=2434373">Kulturni dnevnik</a> 
    </div> 

</div> 

出力例(私が得ることができない1):

22:55, Dnevnik, [] 
23:15, Kulturni dnevnik, /page/tv/sr/story/20/rts-1/2434373/kulturni-dnevnik.html 

私は(リンクされたテキストなし)最初の2つの列を取得するか、単にリンクされたテキストのいずれかここで

は、サンプルのHTMLです上記のコードサンプルを使用してください。

+0

あなたがサンプル入力HTMLを共有し、あなたが出力として取得したいのか説明できますか? –

+0

@paultrmbrth:完了! – illuminated

答えて

0

あなたが正しく理解しているのであれば、おそらくプログラムノードを繰り返して、サイクルごとにアイテムを作成するだけです。また、そこのXPathショートカットノードの下にあるすべてのテキストをキャプチャし//text()だし、

のようなものを試してみてくださいchildremです:

programs = response.xpath("//div[contains(@class,'programRow')]") 
for program in programs: 
    item = dict() 
    item['name'] = program.xpath(".//div[contains(@class,'name')]//text()").extract_first() 
    item['link'] = program.xpath(".//div[contains(@class,'name')]/a/@href").extract_first() 
    item['title'] = program.xpath(".//div[contains(@class,'title')]//text()").extract_first() 
    return item 
関連する問題