表需要用scrapy擦拭

时间:2013-07-02 17:21:07

标签: python web-scraping scrapy

有桌子需要用scrapy刮掉。数据采用以下格式:

<table>

<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>

我通过

获得完整的项目清单
items = hxs.select('//table[@class="tablehd"]//td//text()').extract()

如何将它们拆分为每个项目,然后分配数据td1-td5

1 个答案:

答案 0 :(得分:2)

根据tutorial shell示例,您应首先获取<tr>元素,然后从这些元素中抓取<td>,如下所示:

rows = hxs.select('//tr')
for row in rows:
    print row.select('td/text()').extract()

rows将是您迭代的HtmlXPathSelector个对象列表,然后从当前<td>的每个<tr>中提取文本。

row.select('td/text()').extract()将是一个列表,其中包含给定行的每个单元格的文本:

[u'MON, NOV 11', u'Item', u'Item', u'Item']
[u' Item ', u' Item ', u' Item ', u' Item ']
[u' Item ', u' Item ', u' Item ', u' Item ']