serg_small_developer
@serg_small_developer
Начинающий прогер

Как в scrapy обрабатывать каждый урл?

Всем привет. Работаю со scrapy.
Не могу понять как сделать следующее, есть несколько сатмапов, я сканирую первый из списка ( этим - SitemapSpider ), потом когда он прошел по всему из первого урла мне нужно что бы он дополнительно обработал все урлы, (предварительно я по каждому урлу собрал title и сложил в список) т.е. мне нужно взять этот список и сравнить из данными из базы данных и если есть различия и т.д. зафиксировать. Самый сок в том что мне нужно после каждого сайтмапа делать некие манипуляции с инфой по этому урлу и потом запускать для следующего урла.

Сейчас для одного сайтмапа я делаю это просто), т.е. в файле pipelines.py в функции close_spider я делаю то что мне нужно, но как такое сделать для разных урлов?), в голову приходит только одна мысль - запускать паук из другого файла в котором будет цикл отвечающий за перебор списка урлов и передачу их в паук, но так как я недавно пришел в python и scrapy не знаю насколько хороша эта идея и решил спросить более опытных людей.

Подскажите пожалуйста делать по тому варианту как я написал или в scrapy для таких целей есть что-то?

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

from scrapy.spiders import SitemapSpider
class MySpider(SitemapSpider):
    sitemap_urls = ['http://www.example.com/robots.txt']
    sitemap_rules = [
        ('/shop/', 'parse_shop'),
    ]

    other_urls = ['http://www.example.com/about']

    def start_requests(self):
        requests = list(super(MySpider, self).start_requests())
        requests += [scrapy.Request(x, self.parse_other) for x in self.other_urls]
        return requests

    def parse_shop(self, response):
        pass # ... scrape shop here ...

    def parse_other(self, response):
        pass # ... scrape other here ...
  • Вопрос задан
  • 426 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы