2016-03-26 12 views
1

alıyorum web sitesinden bilgi “oyun ile çal” istiyorum:Scrapy seçicilerini kullanarak tutarsız bir işaretleme nasıl yapılır?

http://www.euroleague.net/main/results/showgame?gamecode=197&seasoncode=E2015#!playbyplay

Tricky biçimlendirme kodu:

<tr> 
     <td>8</td> 
     <td>Def Rebound</td> 
     <td>13 - 13</td> 
     <td>Zalgiris Kaunas</td> 
     <td>VECVAGARS, KASPARS</td> 
    </tr> 
    <tr class="play"> 
     <td>8</td> 
     <td>Two Pointer</td> 
     <td>15 - 13</td> 
     <td>Zalgiris Kaunas</td> 
     <td>VECVAGARS, KASPARS</td> 
    </tr> 

puan oyunda yapıldığında, o kullanır:

<tr class="play">

yerine 0

:

<tr>

... görsel bilgiyi ayırmak için. Bunu işleyemez kullanıyorum “olaydan sonra olayı” olarak belirlenmiş ve kodu almak istiyorum:

for sel in response.xpath('//div[@class="wp-field wp-field-content table-responsive"]//div/table/tbody/tr'): 
    item['Minute'] = sel.xpath('td[1]/text()').extract() 

ben recieving am sonucudur: Kod olduğunda

{'Event': [u'Def Rebound'], 
'Minute': [u'19'], 
'Player': [u'KIRILENKO, ANDREI'], 
'Res_h': [u'31 - 38'], 
'Res_v': [u'31 - 38'], 
'Team_player': [u'CSKA Moscow']} 

{'Event': [], 
'Minute': [], 
'Player': [], 
'Res_h': [], 
'Res_v': [], 
'Team_player': []} 

Boş değerler görünür "tr" için "play" sınıfıyla başa çıkmak.

Soru: bunu yapabileceğimi nasıl

, ben iki olası biçimlendirme seçenekleri varken belli bir rasgele durumlarda accures? Bu, tüm alacak

cevap

1

İstediğiniz:

In [53]: l=['Event',        
'Minute', 
'Player', 
'Res_h', 
'Res_v', 'Team_player'] 

In [54]: table = r.xpath("//table[@class='table']") 

In [55]: for tr in table.xpath(".//tr[position() > 1]"): 
      assert dict(zip(l, tr.xpath("./td//text()").extract())) != {} 

....:  
In [56]: 

Bu başlık satırını atlar ve geri kalan her şey çeker, l elemanların sırası yanlıştır ama fikir ben rakama bırakacaktır öylesine doğrudur Ne istediğinizi ve nerede, bu, tr.xpath("./td//text()":

[u'15', u'Shot Rejected', u'29 - 25', u'Zalgiris Kaunas', u'HANLAN, OLIVIER'] 
[u'15', u'Block', u'29 - 25', u'Real Madrid', u'NOCIONI, ANDRES'] 
[u'15', u'Off Rebound', u'29 - 25', u'Zalgiris Kaunas', u' '] 
[u'15', u'Two Pointer', u'31 - 25', u'Zalgiris Kaunas', u'VENE, SIIM-SANDER'] 
[u'15', u'Assist', u'31 - 25', u'Zalgiris Kaunas', u'RANDLE, JEROME'] 
[u'16', u'Minute', u'31 - 25', u' ', u' '] 
[u'16', u'Three Pointer', u'31 - 28', u'Real Madrid', u'NOCIONI, ANDRES'] 
[u'16', u'Assist', u'31 - 28', u'Real Madrid', u'LLULL, SERGIO'] 
[u'16', u'Two Pointer', u'33 - 28', u'Zalgiris Kaunas', u'RANDLE, JEROME'] 
[u'16', u'Foul', u'33 - 28', u'Zalgiris Kaunas', u'SAJUS, MARTYNAS'] 
[u'16', u'Foul Drawn', u'33 - 28', u'Real Madrid', u'LLULL, SERGIO'] 
[u'16', u'Free Throw In', u'33 - 29', u'Real Madrid', u'LLULL, SERGIO'] 
[u'16', u'Free Throw In', u'33 - 30', u'Real Madrid', u'LLULL, SERGIO'] 
[u'16', u'In', u'33 - 30', u'Zalgiris Kaunas', u'JANKUNAS, PAULIUS'] 
tarafından döndürülenin bir pasajıdır.