来自儿童的Scrapy提取物

时间:2013-08-04 09:20:49

标签: python extract scrapy

这是我要提取的来自www.example,com的源代码。如果有人能解释我需要提取的内容。

<table>
    <tr>
        <td colspan="5" style="text-align:left;padding-left:4px;" class="category"><img-src="http://www.example.com/images/menu.gif">TEXT in td 1 </td>
    </tr>
    <tr>
        <td class="date" colspan="5">TEXT in td 2</td>
    </tr>
    <tr>
        <td style="test-align:left;width:40px;">TEXT in td 3</td>
        <td style="padding-right:4px; width:180px;text-align:right">TEXT in td 4</td>
        <td style="width:40px;text-align:center"> TEXT in td 5</td>
        <td style="padding-left:5px; width:180px;text-align:left">TEXT in td 6</td>
        <td style="width:40px;text-align:center"></td>
    </tr>
</table>

这是我想要解释的代码。我想提取每个单独的文本, 文字4,5和6上画得很好。文本1,2和3,如果有人可以告诉我如何提取。提前致谢!

    item['TEXT in td 1'] = app.select('//td[2]//text()').extract()
    item['TEXT in td 2'] = app.select('//td[3]/text()').extract()
    item['TEXT in td 3'] = app.select('td[4]/text()').extract()
    item['TEXT in td 5'] = app.select('td[3]//text()').extract()
    item['TEXT in td 4'] = app.select('td[2]/text()').extract()
    item['TEXT in td 6'] = app.select('td[4]/text()').extract()

This a extract Scrapy:

2013-08-04 11:27:11+0300 [app] DEBUG: Scraped from <200 />
        {'TEXT in td 1': [u'', u'TEXT in td 1'],
         'TEXT in td 2': [u'August 04'],
         'TEXT in td 6': [],
         'TEXT in td 5': [],
         'TEXT in td 4': [],
         'TEXT in td 6': []}
2013-08-04 11:27:11+0300 [app] DEBUG: Scraped from <200 />
        {'TEXT in td 1': [u'', u'TEXT in td 1'],
         'TEXT in td 2': [u'August 04'],
         'TEXT in td 6': [u'TEXT in td 6'],
         'TEXT in td 5': [u'TEXT in td 5'],
         'TEXT in td 4': [u'TEXT in td 4'],
         'TEXT in td 6': [u'TEXT in td 6']}

1 个答案:

答案 0 :(得分:1)

这可能会按如下方式完成(我没有scrapy,但你的Xpath存在问题)

 item['TEXT in td 1'] = app.select('//table/tr[1]/td[1]//text()').extract()
 item['TEXT in td 2'] = app.select('//table/tr[1]/td[2]/text()').extract()
 item['TEXT in td 3'] = app.select('//table/tr[2]/td[1]/text()').extract()
 item['TEXT in td 5'] = app.select('//table/tr[2]/td[2]/text()').extract()
 item['TEXT in td 4'] = app.select('//table/tr[3]/td[1]/text()').extract()
 item['TEXT in td 6'] = app.select('//table/tr[3]/td[2]/text()').extract() 

我们正在做的是(假设一个表)我们正在获取表的每一行(观察tr [1],tr [2]等然后访问这些行中的单元格) 观察td [1],td [2]等。