Как авторизоваться внутри SitemapSpider

У меня есть паук, который получает данные через sitemap.xml, однако когда я добавляю авторизацию перед запросами это переопределяет метод start_requests, что нарушает логику класса.

class OmegaSpider(SitemapSpider):
    name = 'omega'
    allowed_domains = ['idp.etsp.ru', 'www.etsp.ru']
    sitemap_urls = ['https://www.etsp.ru/sitemap.xml']
    sitemap_rules = [('/catalogue/', 'parse_item')]

    def start_requests(self):
        login_url = 'https://idp.etsp.ru/Account/Login'
        return [Request(login_url, callback=self.login)]

    def login(self, response: Response):
        token = response.css("input[name=__RequestVerificationToken]::attr(value)").extract_first()

        return scrapy.FormRequest.from_response(
            response,
            formdata={
                '__RequestVerificationToken': token,
                'Username': 'name',
                'Password': 'pass'
            },
            callback=self.start_scraping)

     def start_scraping(self, response: Response):
        cookies_dict = {cookie['name']: cookie['value'] for cookie in response.headers.getlist("Set-Cookie")}

        for url in self.sitemap_urls:
            yield scrapy.Request(url=url, cookies=cookies_dict, callback=self.parse_item)

     def parse_item(self, response: Response):
         pass

После авторизации скрипт ожидаемо не начинает анализировать sitemap. Подскажите, как можно решить вопрос авторизации и дальнейшей обработки sitemap?


Ответы (0 шт):