2013-11-29 2 views
0

Я пытаюсь использовать scrapy, чтобы exrtact из таблицы html и хранить их в базе данных. Информация хранится в строках и нет возможности отличать одну запись от другой. (сайт, который я сканирую, - http://www.ets.gr/frontoffice/portal.asp?cpage=NODE&cnode=12).Извлечение информации из строк таблицы с использованием xpath в scrapy

Как петлю к каждой строке таблицы и получить информацию, если форма:

Record1: тр [1] и тр [2] (пропуск тр [3])
Record2: тр [4] и tr [5] (skip tr [6])
Record3: tr [7] и tr [8] (skip tr [9])
и так ...?

Узлы я получаю для того, чтобы петли для каждого из них являются:
узлы = hxs.xpath ("// таблица/TR/TD/стол/TR/TD/стол/TR/TD/таблица/tr ")

+0

'/ html/body/table [2]/tbody/tr/td [2]/table [2]/tbody/tr/td/table/tbody/tr [4]/td/table/tbody/tr [ @ valign = "top"] ' – metaphy

+0

@metaphy см. http://stackoverflow.com/questions/18241029/why-does-my-xpath-query-scrapi ng-html-tables-only-work-in-firebug-but-not-the –

ответ

1

Построить эти результаты невозможно с помощью XPath 1.0 (и все это поддерживает scrapy), для этого вам потребуется использовать код Python (после извлечения информации с помощью XPath).

Если вы хотите, чтобы опустить третий/шестой/... грести с самого начала, используйте position() и по модулю:

//table/tr/td/table/tr/td/table/tr/td/table/tr[(position() mod 3) != 0] 

В качестве альтернативы, используйте атрибут @valign как предложенный metaphy:

//table/tr/td/table/tr/td/table/tr/td/table/tr[@valign = 'top'] 
+0

Спасибо за ответ. Мне, наконец, удается отказаться от этой таблицы с помощью условных операторов и добавить элементы в конце каждого цикла, используя флаг. – axs203dd

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