#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. Конечно! Глупая я … Спасибо вам за вашу помощь.