2013-08-04 4 views
0

Это исходный код от 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']} 
+0

Если вы можете изменить свой вопрос, указав полный код паука (и сканирование сайта), нам будет намного легче помочь. :) – Talvalin

ответ

1

Это, вероятно, будет сделано следующим образом (я не имею Scrapy, но есть проблема с XPaths)

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

Что мы делаем, (предполагая одну таблицу), мы являются выборки каждой строки таблицы (наблюдать тр [1], тр [2] и т.д., а затем доступа к клеткам в пределах этих строк наблюдать тд [1], тд [2] и т.д ...

+0

Спасибо, Прахлада! Не работает правильно. У меня есть несколько таблиц в одном исходном коде, теперь рисуем из всех таблиц в одном элементе. – Floriano

+0

@Floriano В этом случае вы также получили пользовательские индексы с * таблицей ** так же, как мы сделали с ** tr ** и ** td **. –

+0

Моя проблема заключается в том, как извлекать тексты 1, 2 и 3. Я пробовал: ** item ['TEXT in td 1'] = app.select ('// td [2]/img/@ src/text () '). extract()) ** но я не знаю, как извлечь. Я читал в google как извлечь. – Floriano

Смежные вопросы