2016-01-22 2 views
2

Я выскабливание страницы, которая содержит таблицы, я могу извлечь ссылки Я заинтересован таким образом:Как выбрать столы со скрипом?

response.xpath('//*[@id="mw-content-text"]/table[1]/tr/td[1]/a/@href').extract() 

Теперь есть 3 или более таблиц, если я пишу так:

response.xpath('//*[@id="mw-content-text"]/table/tr/td[1]/a/@href').extract() 

Я получаю данные всех таблиц, но если я хочу только п таблиц, есть ли способ, чтобы получить его без использования русского как выражения, что-то вроде этого :

response.xpath('//*[@id="mw-content-text"]/table[1:n]/tr/td[1]/a/@href').extract() 

?

ответ

1

Предполагая, что n представляет собой целое число, вы можете использовать position() в пределах вашего XPath запроса следующим образом:

'//*[@id="mw-content-text"]/table[position() <= {}]/tr/td[1]/a/@href'.format(str(n)) 

Это будет выбирать данные из первых n таблиц в соответствии с требованиями.

В качестве альтернативы, вы можете использовать цикл следующим образом:

for i in range(5): 
    response.xpath('//*[@id="mw-content-text"]/table[{}]/tr/td[1]/a/@href'.format(str(i))).extract() 
+0

Великий, где я могу найти в документации по этой функции? –

1
'//*[@id="mw-content-text"]/table[position()<n]/tr/td[1]/a/@href' 
Смежные вопросы