Уведомления

Группа в Telegram: @pythonsu

#1 Июль 24, 2016 16:46:14

Denzil
Зарегистрирован: 2015-12-24
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Scrapy - input processor

Привет всем!
items.py:

 import scrapy
from scrapy.loader.processors import MapCompose
def filter_spaces(value):
    return value.strip(" ").strip("\n")
class LotItem(scrapy.Item):
    num = scrapy.Field(input_processor=MapCompose(filter_spaces))

spider.py:
 def parse_item(self, response):
    item = LotItem()                    
    item['num'] = response.xpath('//div/span/text()').extract()[0]
    yield item

response.xpath('//div/span/text()').extract() возвращает строку типа:

 "\n1234     "

А мне нужно получить - “1234”
Но мой код не работает. Почему?
Спасибо!!!

Отредактировано Denzil (Июль 24, 2016 16:51:31)

Офлайн

#2 Сен. 11, 2016 18:07:58

Razor
Зарегистрирован: 2012-09-11
Сообщения: 127
Репутация: +  2  -
Профиль   Отправить e-mail  

Scrapy - input processor

Denzil
Но мой код не работает.
Весь код сразу не работает? Глупости какие. Нужно кидать сюда гуглить ошибку, когда что-то не работает и после листания starkoverflow все будет работать отлично.

Denzil
А мне нужно получить - “1234”
Ну, напиши тогда вот так:
 numbers = response.xpath('//div/span/text()').re('\d+')
numbers = numbers[0] if numbers else None
или
 numbers = response.xpath('//div/span/text()').extract_first()
numbers = numbers.strip(" \n") if numbers else None

А вот так
 .extract()[0]
писать нельзя, потому что может вернуться пустой список

Отредактировано Razor (Сен. 11, 2016 18:12:05)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version