Парсинг с сайтов на python

не давно узнал про библиотеку beautifulsoup4, с которой можно получать какую-либо информацию с сайтов. Но что делать, если сайт требует авторизации?


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

Автор решения: HackerU

Для решения проблемы авторизации лучше использовать Scrapy, у него это хорошо получается, вот пример кода:

import scrapy


class QuitesSpider(scrapy.Spider):
    name = 'login-spider'
    login_url = 'http://quotes.toscrape.com/login'
    start_urls = [login_url]

    def parse(self, response):
        token = response.css('input[name="csrf_token"]::attr(value)').extract_first()
        data={
            'csrf_token': token,
            'username': 'abs',
            'password': 'abs'
        }

        yield scrapy.FormRequest(url=self.login_url, formdata=data, callback=self.parse_quotes)

    def parse_quotes(self, response):
        for q in response.css('div.quote'):
            yield {
                'author_name': q.css('small.author::text').extract_first()
            }

P.S. код написан для парсинга специально созданой для этого страницы http://quotes.toscrape.com.

Для более эффективной работы с этим инструментом понадобятся уверенные знания конструкции yield

→ Ссылка
Автор решения: gusarov.f

Отправляйте POST запрос на адрес, отвечающий за авторизацию. На какой адрес и с какими параметрами, смотрите в инспекторе. Данные, полученные в ответе, используйте для дальнейших запросов.

→ Ссылка