JRazor
@JRazor
Senior StarkOverFlow Programmer

Scrapy: как после response.xpath получать один элемент, а не список?

Здравствуйте, уважаемые тостеровцы.

Уже который скрипт пишу на Scrapy и возник вопрос, который я не смог решить сам: предположим есть такой код -

def parse_item(self, response):
        sel = Selector(response)
        image = sel.xpath('//*[@id="listing-images"]/div/a/@href').extract()[0]
        name =  sel.xpath('//*[@id="main"]/div/h1/text()').extract()[0]

При запросе sel.xpath('').extract() возвращается список. Разумеется, приходится либо join'ом, либо через [0] превращать список в один элемент. Но с этим связан ряд проблем: join'ы прописывать каждый раз - бред, а [0] может вернуть ошибку после пустого списка.

Собственно вопрос - есть ли альтернатива extract'у? Как вернуть после xpath один элемент?
  • Вопрос задан
  • 1072 просмотра
Пригласить эксперта
Ответы на вопрос 2
@stopbreath
начинающий/практикующий python-программист
first_or_none = lambda x: x[0] if x else None
Вот вам небольшая лямбда функция, которая возвращает первый элемент последовательности или None.
Ответ написан
@lololololo
Как вернуть после xpath один элемент?

Как вернуть один элемент если их 0?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы