Size: a a a

2019 December 17

К

Кирилл in Scrapy
Elena V
Есть сайтмап, состоящий из других сайтмапов.
У меня есть спайдер, который бегает по всем этим вложенным сайтмапам и дергает ссылки все.

он наследуется от SitemapSpider. все работает. все ок.

тут вопрос. а если мне из вложенного сайтмапа каждого нужно брать не ВСЕ, а парочку рандомных? как лучше сделать?
Это не самая простая задача)
источник

EB

Elisei Badanin in Scrapy
переопределить “деф парс()” и отдавать рандомные реквесты, что там сложного?)
источник

EV

Elena V in Scrapy
ну вот если бы она была простой для меня - сда не спрашивала бы :) есть воспитанная привычка погуглить, почитать доку, потом задать вопрос 😁 вот ищу совета
источник

EB

Elisei Badanin in Scrapy
точнее это def _parse_sitemap(self, response)
источник

EB

Elisei Badanin in Scrapy
хотя нет, там все еще проще….
источник

EB

Elisei Badanin in Scrapy
def sitemap_filter(self, entries):
       """This method can be used to filter sitemap entries by their
       attributes, for example, you can filter locs with lastmod greater
       than a given date (see docs).
       """
       for entry in entries:
           yield entry
источник

К

Кирилл in Scrapy
Переопредели метод _parse_sitemap, скопируй оттуда всё, потом добавь после после определения it = (на строке 53, если соурс читать), возьми рандомные числа и сделай слайс итератора из itertools.islice
источник

EB

Elisei Badanin in Scrapy
зачем копировать? super()._parse_sitemap
источник

EB

Elisei Badanin in Scrapy
оно вернет генератор
источник

К

Кирилл in Scrapy
потому что вмешаться нужно, а не наследовать
источник

EB

Elisei Badanin in Scrapy
из него берем рандомные и отдаем дальше
источник

К

Кирилл in Scrapy
нет, он йелдит и под сайтмапы и ссылки
источник

EB

Elisei Badanin in Scrapy
смысл говнокодить, если в питоне прекрасный ооп
источник

К

Кирилл in Scrapy
там и то и то
источник

EB

Elisei Badanin in Scrapy
Ну там уже и смотреть что он вернул итд
источник

EV

Elena V in Scrapy
не уверенна, что поняла что делать. что бы я без вас делала. щас пойду попробую, что-то полюбому налыгнется, ибо я этот _parse_sitemap в глаза не видела. 😊
источник

К

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

EB

Elisei Badanin in Scrapy
правильнее — да
источник

EB

Elisei Badanin in Scrapy
а что плохого в том, тобы проитерироваться?
источник

EB

Elisei Badanin in Scrapy
иначе завтра скрапи обновят, и копипастный код превратится в тыкву
источник