2016-04-16 11 views
1

Ich benutze Scrapy, um den Inhalt von einer Website innerhalb einer bestimmten <td> Tag zu kratzen. Das Tutorial zeigt mir, wie man alle Daten herunterladen kann - ich möchte nur die Daten von einem <td>. Half!scrape spezifische Tabelle Element mit Scrapy

Beispiel generischen Tabellencode:

<table> 
<tr> 
<td>1,1</td> 
<td>1,2</td> 
</tr> 
<tr> 
<td>2,1</td> 
<td>2,2</td> 
</tr> 
</table> 

Ich weiß nicht, wie einfach die 2,2 Wert zu erhalten.

Vielen Dank im Voraus

Antwort

2

Verwenden Sie die response.xpath() oder response.css() Verknüpfungen das letzte td Element in einem table zu bekommen. Beispiele:

response.xpath("//table//td[last()]/text()").extract_first() 
response.xpath("//table//td/text()").extract()[-1] 
response.css("table td::text").extract()[-1] 
+0

Und wenn ich für eine beliebig positioniert , sagen wir, # 223 von 900 suchen, wie wähle ich, dass man? – wesk

+0

@hiddenhobbit sicher, Beispiel: 'response.xpath (" // Tabelle // td [223]/text() "). Extract_first()' - Indizierung beginnt mit 1 innerhalb von XPath-Ausdrücken. – alecxe

+0

@alecxe Wie würden Sie die gleiche Referenz mit einem CSS-Selektor machen? Ich versuche, eine ähnliche Aufgabe mit CSS-Selektoren zu tun, und ich bekomme immer 'listindex out of range' Fehler ...' case_number = tr.css ('td'). Extract() [- 1] 'und das gleiche gilt, ob der Index ist -1, 0, 1, 4, was auch immer – Pixelknight1398

Verwandte Themen