Не удается получить доступ к элементу массива в Python, исходящему из Xpath

#python #xpath #scrapy

Вопрос:

Я пытаюсь пройтись по массиву в python:

 # pull all shops into array
selectors = response.xpath('//div[@class="shop"]')
# cycle through all elements
for selector in selectors:
 

Почему-то это не работает, так как он всегда обращается к первому элементу. Просматривая xpath вручную, я получаю следующее:

 >>> selectors = response.xpath('//div[@class="shop"]')
>>> selectors[7].xpath('//a[@class="name"]/@href').extract_first()
'/redirect/id/22216/ppn/1100410330'

# direct access
>>> response.xpath('//div[@class="shop"][8]//a[@class="name"]/@href').extract_first()
'/redirect/id/31/ppn/1100410330'
 

Получив прямой доступ к элементу (примечание 8=7 из-за 0), я могу его получить. Просто проехать по нему на велосипеде не получится.

Он повторяется правильно n раз, но я всегда получаю первый элемент.

Ответ №1:

Я думаю, ты хочешь selector.xpath('.//a[@class="name"]/@href').extract_first() .

Комментарии:

1. Конечно! Глупая я … Спасибо вам за вашу помощь.