#python #авторизация
Хочу авторизоваться на сайте moikrug.ru и ходить по ссылкам, писал два способа, но ничего не получилось, вот первый, тут просто выводится неавторизованная страница import requests from requests.auth import HTTPDigestAuth url = 'https://passport.yandex.ru/auth?retpath=https%3A%2F%2Fmoikrug.yandex.ru' r=requests.get(url, auth=HTTPDigestAuth('Мой логин', 'Мой пароль')) print(r.text) вот второй способ, тут ошибка import urllib.request import http.cookiejar import urllib.parse cookieJar = http.cookiejar.CookieJar opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookieJar)) params = urllib.parse.urlencode({'login' : 'Мой логин', 'passwd' : 'Мой пароль'}) #get = urllib.request.Request('https://passport.yandex.ru/auth? retpath=https%3A%2F%2Fmoikrug' # '.yandex.ru' , params) f = opener.open('https://passport.yandex.ru/auth?retpath=https%3A%2F%2Fmoikrug' '.yandex.ru', params) h = f.read() print(h) Выводит ошибку: line 14, in'.yandex.ru', params) TypeError: POST data should be bytes or an iterable of bytes. It cannot be of type str. Подскажите пожалуйста, что я делаю не так и в чем проблема?
Ответы
Ответ 1
Во втором случае ошибка связана с тем, что вы пытаетесь вызвать метод open с аргументом params, который является строкой, а методу нужен аргумент типа байт или коллекция байт. Вам должна помочь следующая конструкция: params = params.encode('UTF-8') А вообще, я бы не советовал работать с сайтом moikrug.ru таким образом. У сайта есть API и документация к нему. Используйте её, это будет наиболее правильным решением.
Комментариев нет:
Отправить комментарий