#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 и документация к нему. Используйте её, это будет наиболее правильным решением.
Комментариев нет:
Отправить комментарий