Страницы

Поиск по вопросам

суббота, 11 апреля 2020 г.

Python 3 авторизация

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

Комментариев нет:

Отправить комментарий