@Frim0nt
Запутавшийся в себе

Как парсером авторизироваться на сайте?

Помогите, я новичок в Python, парсю сайт опираясь на этот туториал: https://www.youtube.com/watch?v=kO8AHedGh8o

Моя задача получить информацию с сайта с авторизацией, получился такой код:

import requests
from bs4 import BeautifulSoup

class Bars(object):
    url = 'ссылка на сайт'

    def auth(self):
        url = self.url+'/auth/login'
        session = requests.Session()
        params = {
            'login_login':u'мой логин',
            'login_password':u'мой пароль'
        }
        r = session.post(url,params)
        print(r.text)

if __name__ == '__main__':
    bars = Bars()
    bars.auth()


В туториале человек через инструменты разработчика смотрит запрос при регестрации со статусом 302 и методом POST, в котором у него внизу отображается данные которые он отправил (пункт Form Data), в этом пункте и есть ссылка на которую надо скидывать данные для входа

5e21ebf19271c610504976.png

5e21ec0e5698a135166466.png

У меня же если ввести корректные данные запрос 302 с методом GET и к тому же не имеет пункта Form Data

5e21f00b2b3c5294159679.png
(синие квадраты это основная ссылка по типу ):
https://qna.habr.com/


И в низу никакого пункта Form Data нет

После этого я решил ввести неверные данные и посмотреть куда этот запрос введет, и введя их я получил запрос 301 метода POST где был пункт Form Data, в котором показывались данные которые требует сайт при авторизации

5e21f1a01184d351952485.png

Тогда я и решил взять ссылку запроса от туда и отправлять туда эти данные, и в получил вот такое в IDE :

5e21f20ed825f154372673.png

Как сделать так чтобы я вводил эти данные, авторизировался и получал уже html код самого сайта( с авторизацией)
  • Вопрос задан
  • 205 просмотров
Решения вопроса 1
@pro100chel
Ну типо хз что у тебя там за сайт, но почти всегда можно сделать авторизацию и парсить.
Вот алгоритм действий:
1) Создаешь акк (желательно вручную, т.к. могут стоять всякие разные капчи и т.д.)
2) Авторизируешься опять же вручную и параллельно зыришь на вкладку Network в отладчике у браузера. Может не получиться, если страница перезагружается. Тогда заходишь на форму авторизации и смотришь названия полей и обработчик запроса. Может не получиться и так. Тогда скачивай какой-нибудь инструмент для отладки сайта, чтобы страница не перезагружалась и можно было бы увидеть запрос.
3) Создаешь сессию в питоне и делаешь запрос. В дальнейшем постоянно отправляешь запросы только через сессию, т.к. это почти как браузер (сессия хранит куки и прочую лабуду)
authdata = {'login': 'mylogin', 'password': 'mypassword'}
mysession = requests.session()
response = mysession.post('https://example.com/reg.php', data=authdata)
parsedata = mysession.post('https://example.com/catalog') //тут я делаю парсинг через сессию страницы каталога сайта, ты вписываешь свою страницу, которую хочешь спарсить
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы