Size: a a a

2021 February 07

🎱

🎱 in Scrapy
SoHard 🎄
а потом отфильтруй пустые и собери нормально
['\n\t', 'Home', '\n\t\n\t\t\n\t\t\t', '/', '\n\t\t\t', 'Araminta James', '\n\t\t\n\t\t', '/', '\n\t\t', 'Boyfriend Tie Dye Set Blue', '\n\t\n']

>>> raw_taxonomy = response.css("div.product-details nav.breadcrumbs ::text").getall()

>>> [x for x in raw_taxonomy if x.strip() and x.strip() != '/']

['Home', 'Araminta James', 'Boyfriend Tie Dye Set Blue']


хз даж насколько норм так делать
источник

H

Harsh in Scrapy
Кирилл
I'm not sure if it's worth that much money) that's why I'm asking. This is the price for a good pair of shoes or a jacket. But maybe this is about fashion things and not about good quality
Yeah. One of those overpriced stuff. I.e supreme this and that.
источник

S

SoHard 🎄 in Scrapy
🎱
['\n\t', 'Home', '\n\t\n\t\t\n\t\t\t', '/', '\n\t\t\t', 'Araminta James', '\n\t\t\n\t\t', '/', '\n\t\t', 'Boyfriend Tie Dye Set Blue', '\n\t\n']

>>> raw_taxonomy = response.css("div.product-details nav.breadcrumbs ::text").getall()

>>> [x for x in raw_taxonomy if x.strip() and x.strip() != '/']

['Home', 'Araminta James', 'Boyfriend Tie Dye Set Blue']


хз даж насколько норм так делать
а почему нет?)
источник

S

SoHard 🎄 in Scrapy
Если это тупо, но работает, значит это не тупо!
источник

К

Кирилл in Scrapy
🎱
['\n\t', 'Home', '\n\t\n\t\t\n\t\t\t', '/', '\n\t\t\t', 'Araminta James', '\n\t\t\n\t\t', '/', '\n\t\t', 'Boyfriend Tie Dye Set Blue', '\n\t\n']

>>> raw_taxonomy = response.css("div.product-details nav.breadcrumbs ::text").getall()

>>> [x for x in raw_taxonomy if x.strip() and x.strip() != '/']

['Home', 'Araminta James', 'Boyfriend Tie Dye Set Blue']


хз даж насколько норм так делать
Относительно... лучше не использовать условия для побочных эффектов, особенно в компрехеншенах, но так делают иногда
источник

🎱

🎱 in Scrapy
Кирилл
Относительно... лучше не использовать условия для побочных эффектов, особенно в компрехеншенах, но так делают иногда
а как лучше? ебнуть регулярку?)
источник

К

Кирилл in Scrapy
Можешь попробовать куда-то втулить нормалайз спэйсес из xpath может поможет, или второй вариант, это сначала склеить, а потом убрать лишнее
источник

К

Кирилл in Scrapy
По оптимизации всегда лучше делать один вызов, чем много маленьких в цикле
источник

К

Кирилл in Scrapy
В пайтоне не так важно за такие оптимизации бороться, но если это у тебя будет в привычке и на автомате, то будет хорошо
источник

🎱

🎱 in Scrapy
понял, спасип)
источник

S

Shaman89 in Scrapy
В чате про парсер принято говорить спарсибо
источник

🎱

🎱 in Scrapy
использую ItemLoader
class ProductLoader(ItemLoader):
   default_output_processor = TakeFirst()
   product_name_in = Compose(str.title)
в product_name_in приходит список с одним элементом.
Мне нужно чтобы  
Compose(str.title)
взял элемент из списка и Titlecase.
Сейчас получаю такую ошибку, что вполне логично:

ValueError: Error in Compose with <method 'title' of 'str' objects> value=['Xandra Cropped Bikini Baby Blue'] error='TypeError: descriptor 'title' for 'str' objects doesn't apply to a 'list' object'

Мне нужно определить свой метод который будет делать то что мне нужно и передать  этот метод в Compose?
источник

🎱

🎱 in Scrapy
product_name_in = Compose(lambda v: v[0], str.title)
источник

К

Кирилл in Scrapy
Не пользуюсь лоадерами, но похоже, что тебе в аут нужно добавить тэйк ферст и тайтл, потому что оно всё ещё список, а должно быть строкой
источник

К

Кирилл in Scrapy
А, оно там в инпуте всё равно делает список, так что даже если делать тэйк ферст, то на выходе всё равно будет список
источник

МС

Михаил Синегубов... in Scrapy
подозреваю, что тут нужен MapCompose. Если надо применить функцию к каждому элементу списка.
хотя, можно без всяких композов, написать процессор, принимающий список и назначить его на "IN"
источник

МС

Михаил Синегубов... in Scrapy
🎱
использую ItemLoader
class ProductLoader(ItemLoader):
   default_output_processor = TakeFirst()
   product_name_in = Compose(str.title)
в product_name_in приходит список с одним элементом.
Мне нужно чтобы  
Compose(str.title)
взял элемент из списка и Titlecase.
Сейчас получаю такую ошибку, что вполне логично:

ValueError: Error in Compose with <method 'title' of 'str' objects> value=['Xandra Cropped Bikini Baby Blue'] error='TypeError: descriptor 'title' for 'str' objects doesn't apply to a 'list' object'

Мне нужно определить свой метод который будет делать то что мне нужно и передать  этот метод в Compose?
тут не совсем понятно, взять "первый элемент" или "каждый элемент"?
источник

МС

Михаил Синегубов... in Scrapy
proc = Compose(str.title)
proc(['hello', 'world', 'this', 'is', 'something'])

=> Fail

proc = MapCompose(str.title)
proc(['hello', 'world', 'this', 'is', 'something'])
['Hello', 'World', 'This', 'Is', 'Something']


Ok
источник

🎱

🎱 in Scrapy
спасибо, помогло.
источник

🎱

🎱 in Scrapy
Михаил Синегубов
proc = Compose(str.title)
proc(['hello', 'world', 'this', 'is', 'something'])

=> Fail

proc = MapCompose(str.title)
proc(['hello', 'world', 'this', 'is', 'something'])
['Hello', 'World', 'This', 'Is', 'Something']


Ok
А если в списке будет один элемент всегда ? Тоже MapCompose ?
источник