2013-07-02 9 views
7

Raschiare i dati da una tabella con scrapy. La tabella HTML è come:Scrape i dati da una tabella con scrapy

<table class="tablehd"> 

<tr class="colhead"> 
<td width="170">MON, NOV 11</td> 
<td width="80">Item</td> 
<td width="60" align="center"></td> 
<td width="210">Item</td> 
<td width="220">Item</td> 
</tr> 

<tr class="oddrow"> 
<td> Item </a></td> 
<td> Item </td> 
<td align="center"> Item </td> 
<td></td> 
<td> Item </td> 
</tr> 

<tr class="evenrow"> 
<td> Item </a></td> 
<td> Item </td> 
<td align="center"> Item </td> 
<td></td> 
<td> Item </td> 
</tr> 


</table> 

intera lista è avialable da

items = hxs.select('//table[@class="tablehd"]//td//text()').extract() 

In che modo li dividere ad ogni voce e quindi assegnare i dati TD1 - td5ta

risposta

10

Non sei sicuro di cosa esattamente si fa voglio vedere nei tuoi articoli, ma ecco un esempio e spero che sia questo:

class MyItem(Item): 
    value = Field() 


class MySpider(BaseSpider): 
    ... 

    def parse(self, response): 
     hxs = HtmlXPathSelector(response) 
     items = hxs.select('//table[@class="tablehd"]/td') 

     for item in items: 
      my_item = MyItem() 
      my_item['value'] = item.select('.//text()').extract() 
      yield my_item 

Speranza th agli aiuti

+0

Come ci si avvicina più righe e colonne – bobsr

+0

che dipende. Per favore, mostra prima cosa vuoi vedere nell'output (elementi). – alecxe

+0

funziona ... grazie .. cercando di estrarre ogni elemento ora .. avere una riga – bobsr

0

Quando si dice "dividerli a ciascun articolo" si intende ogni classe/riga?

In ogni caso, il modo in cui lo farei è semplicemente usare un'espressione regolare.

import urllib, re 
html=urllib.urlopen('domain.com') 
itemfinder=re.compile('td>(.*)</td>') 
items=re.findall(itemfinder, html) 

Se si vuole dividerlo per riga, quindi:

rowfinder=('tr', re.Multiline) 
rows=re.findall(rowfinder, html) 
for row in rows: 
    ...code above except substitute variables apropos 
+0

Chiede come farlo usando Scrapy. Inoltre, in pratica, l'analisi di html tramite regex non è una buona idea. – alecxe

+0

Abbastanza onesto, non ero sicuro, ho pensato di offrire comunque una soluzione. – JonLeslieHarding

Problemi correlati