Size: a a a

2019 July 12

EB

Elisei Badanin in Scrapy
>>> def f():
...     return
...
>>> f() is None
True
источник

АП

Агент Печенька in Scrapy
Elisei Badanin
а разве return не вернет None?
Да, в том и суть. Логическое разделение для читателя кода.
источник

s

serhii in Scrapy
Агент Печенька
В среднем правило такое:
Если из функци, может в другой ситуации вернуть не None, то нужно явно писать return None.
Если же функция всегда ничего не возвращает то лучше писать просто return.
просто ретурн вернет нан
источник

s

serhii in Scrapy
In [12]: def f(): 
   ...:     return
   ...:      
   ...:                                                                                      

In [13]: def f2():
   ...:     10-2
   ...:      
   ...:      
   ...:                                                                                      

In [14]: def f3():
   ...:     return None
   ...:      
   ...:                                                                                      

In [15]: f() == f2() == f3()

вопрос, что выдаст?
источник

s

serhii in Scrapy
и после ответа =) вы сможете понять, почему пеп рекомендует делать явный возврат , т.е. return None
источник

s

serhii in Scrapy
Агент Печенька
В среднем правило такое:
Если из функци, может в другой ситуации вернуть не None, то нужно явно писать return None.
Если же функция всегда ничего не возвращает то лучше писать просто return.
к сожалению ваше правило не действует, так как пеп говорит другое ;)
источник
2019 July 13

RV

Roman V in Scrapy
> ну я туплю, только по пепу лучше делать return None =)
Почти всегда, но не в этом случае.
https://www.python.org/dev/peps/pep-0255/#specification-return
return None после yield приведет к SyntaxError: 'return' with argument inside generator
источник

RV

Roman V in Scrapy
> Та скрапи не большой, ни надо никакого видео.
Уверенность начинающих - предмет зависти профессионалов :)
источник

AB

A B in Scrapy
Агент Печенька
Да, в том и суть. Логическое разделение для читателя кода.
и так всё ясно любому читателю, кто немного знаком с питоном.
источник

AB

A B in Scrapy
котята, я пока ещё полностью не разобрался, как работает scrapy и как в нём пробрасываюстя данные.

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

в идеале я хочу что-то такое: первый паук делает обход, его результаты скидываются в базу, и если товара ещё нет в базе, то ссылка на товар скидывается в очередь второго паука. в какой части scrapy стоит прописывать подобную логику?
источник

АП

Агент Печенька in Scrapy
Пишешь один паук с двумя методами, в первом парсишь список товаров и йелдишь запрос ко второму методу, который будет товар разбирать.
источник

AB

A B in Scrapy
пауков у меня два, так как я думаю, что иногда нужно их будет запускать по отдельности. ну и конечно, если товар уже есть, то не стоит просматривать страницу с товаром.
источник

АП

Агент Печенька in Scrapy
Тогда база + очередь.
источник

AB

A B in Scrapy
да, база и очередь - это и так понятно. но прописывать это в сам класс паука, или есть какие-то места, куда обычно выносят подобную логику. просто писать такое в самого паука мне кажется грязным стилем. паук не должне ничего знать о базах и прочих вещах.
источник

АП

Агент Печенька in Scrapy
Почитай про архитектуру скрапи, там в доке есть.
Помню что такое место есть, но не помню как называется.
источник

DK

Dmytro Kuzmichov in Scrapy
Ребята, можете подсказать, как реализовать возможность продолжения скрэпинга после итерации?
источник

DK

Dmytro Kuzmichov in Scrapy
Если было прерывание
источник

DK

Dmytro Kuzmichov in Scrapy
Я думал обновлять файл в который мы грузим результаты после каждой итерации, но если запустить заново, оно будет перезаписывать по новой
источник

B

Bulatbulat48 in Scrapy
Dmytro Kuzmichov
Я думал обновлять файл в который мы грузим результаты после каждой итерации, но если запустить заново, оно будет перезаписывать по новой
Из коробки можно, есть в документации resuming job или как-то так
источник

DK

Dmytro Kuzmichov in Scrapy
Bulatbulat48
Из коробки можно, есть в документации resuming job или как-то так
Спасибо, буду пробовать!)
источник