2016-10-10 4 views
0

ためでXPathやCSSセレクタを使用する方法:私は新人だし、何かをつかむためにscrapyフレームワークを使用したいが、私は悩みを持っている機能

HTML形式A:私が使用

<ul class="tip" id="tip1"> 
    <li id="tip1_0"> 
     <a href="http://***" title="***" target="_self">*** 
     </a> 
    </li> 
    <li id="tip1_1"> 
     <a href="http://***" title="***" target="_self">*** 
     </a> 
    </li> 
    <li id="tip1_2"> 
     <a href="http://***" title="***" target="_self">*** 
     </a> 
    </li> 
</ul> 

f = response.xpath("//*[@id='tip1']//li/a/@href | //*[@id='tip1']//li/a/@title").extract() 

I Fがリストされ得る、と私は(F)は、のdictするリストが変更された場合(NAME0 = F [0]、value0 = F [1]、NAME1 = F [2] value1 = [f3]など)。もっと簡単な方法はありますか?

HTML形式B:この場合

<div class="info"> 
    <a target="_blank" href="***" title="***"> 
    </a> 
</div> 
<div class="info"> 
    <a target="_blank" href="***" title="***"> 
    </a> 
</div> 
<div class="info"> 
    <a target="_blank" href="***" title="***"> 
    </a> 
</div> 

file = response.xpath('//div[@class="info"]') 
for line in file: 
    f = line.xpath('/a/@href').extract() 
    d = line.xpath('/a/@title').extract() 

しかし、それは '[] = F' だけ返し、仕事と 'D = []' はありません、だから、私は混乱していましたが、どうすればこの問題を解決できますか?どうもありがとう。

答えて

1

あなたがドットを付加することで、あなたの内側の表現のコンテキスト固有をした可能性:

f = line.xpath('./a/@href').extract() 
d = line.xpath('./a/@title').extract() 

または、aにあなたの外側の表現を指し、@href@titleを取得する:

file = response.xpath('//div[@class="info"]/a') 
for line in file: 
    f = line.xpath('@href').extract_first() 
    d = line.xpath('@title').extract_first() 

も注意してくださいextract_first()方法の使用。

関連する問題