Size: a a a

2020 May 01

К

Кирилл in Scrapy
Что он должен возвращать?
источник

TK

Tatiana Kondratevich in Scrapy
список, наполненный словарями собранными в ходе работы. список является атрибутом класса который в ходе прохода по страницам наполняется.
источник

К

Кирилл in Scrapy
Калбэк не может возвращать список, насколько я помню, а атрибут класса может сам по себе в порядке
источник

i

ildar in Scrapy
Tatiana Kondratevich
Добрый вечер, Подскажите, пожалуйста, почему функция parse может не делать return планируемого когда перед ней присутствуют конструкции
yield response.follow(url_product, callback=self.add_sku_and_save_result) 
?
в коде надеюсь return не используется, только yield'ы?
источник

i

ildar in Scrapy
и сбор списка - это странно, зачем? желательно отдельные items возвращать (ну или словарики)
источник

TK

Tatiana Kondratevich in Scrapy
ildar
в коде надеюсь return не используется, только yield'ы?
есть, но только в условиях которые до  yeild.(существуют проверки на слишком длинное количество найденных айтемов и отсутствие результата)
источник

TK

Tatiana Kondratevich in Scrapy
ildar
и сбор списка - это странно, зачем? желательно отдельные items возвращать (ну или словарики)
мне нужно все собрать что бы потом  получить ссылки на страницы товара, где собираются отсутсвующие данные. Соответственно необходимо хранить где-то уже полученные данные
источник

i

ildar in Scrapy
уф, я даже не знаю с чего начинать
источник

i

ildar in Scrapy
1. не используйте return, пишите просто
if результат:
  yield item
2. проверка на слишком длинное количество айтемов - это есть в settings такой параметр, чтобы паук останавливался к примеру после 300 айтемов
3. если по логике надо что-то хранить - надо пихать это в базу какую-нибудь, внутри паука оно мммммм, вряд ли сохраниться, это же экземпляр класса и живет он до yield'a по-сути. Но у вас вообще неправильно как-то мысль пошла - у скрапи вообще не такая логика работы
источник

i

ildar in Scrapy
условно говоря есть уровни функций, на первом уровне вы к примеру собираете ссылки из меню, вызываете вторую функцию, уровнем ниже, она уже собирает ссылки на товары и ссылки и к примеру может вызывать саму же себя по ссылке на следующую страницу пагинатора.
и уже во второй функции вы вызываете функцию еще ниже - которая по ответу со страницы товара собирает его данные.
источник

i

ildar in Scrapy
лучше сначала туториал почитать по скрапи
источник

i

ildar in Scrapy
источник

i

ildar in Scrapy
в коде это выглядит как-то так, и потом, когда набили item, в третьей функции (которая parse_product) в конце делаем yield item.
щас-бы я наверн переписал с yield from и follow_all, но зато тут понятно по чему итерируется. хм, интересно вот, а куда-бы впихивать пометку по чему мы итерируемся при этом? коммент ставить?
источник

i

ildar in Scrapy
типа, код стал такой, месседж о том, что мы итерируемся по-линкам пропал:
источник

i

ildar in Scrapy
так что-ли писать?
источник

i

ildar in Scrapy
там-бы наверное как раз взлетел оператор := из питоны 3.8
источник

TK

Tatiana Kondratevich in Scrapy
ildar
1. не используйте return, пишите просто
if результат:
  yield item
2. проверка на слишком длинное количество айтемов - это есть в settings такой параметр, чтобы паук останавливался к примеру после 300 айтемов
3. если по логике надо что-то хранить - надо пихать это в базу какую-нибудь, внутри паука оно мммммм, вряд ли сохраниться, это же экземпляр класса и живет он до yield'a по-сути. Но у вас вообще неправильно как-то мысль пошла - у скрапи вообще не такая логика работы
вопросы по поводу второго и третьего пункта.
2. а если для разных моих scraper-ов это количество разное это как-то контролируется?
3.  В базу я планирую записывать после получение всех айтемов(еще не добавила). Но я не могу это  делать до того как получила долнительное поле находящееся на другой странице(которые я follow-лю)
источник

МС

Михаил Синегубов... in Scrapy
Tatiana Kondratevich
вопросы по поводу второго и третьего пункта.
2. а если для разных моих scraper-ов это количество разное это как-то контролируется?
3.  В базу я планирую записывать после получение всех айтемов(еще не добавила). Но я не могу это  делать до того как получила долнительное поле находящееся на другой странице(которые я follow-лю)
2. Делай настройки на уровне каждого паука custom_settings, если мне не изменяет память
источник

TK

Tatiana Kondratevich in Scrapy
Михаил Синегубов
2. Делай настройки на уровне каждого паука custom_settings, если мне не изменяет память
я использую Scrapyd для их  подъема это не меняет ситуацию?
источник

МС

Михаил Синегубов... in Scrapy
Эт х/з. Я до него никак не доберусь 😁
источник