Вход в учетную запись Coursera с использованием Python

Я многому научился у MOOC, поэтому я хотел что-то вернуть им для этой цели. Я думал о разработке небольшого приложения в kivy, которое, таким образом, требует реализации на python. На самом деле, я хотел добиться того, чтобы войти в свой Coursera ведет учетную запись через программу и собирает информацию о курсах, которые я в настоящее время изучаю, для этого сначала я должен войти в систему Coursera ( https://accounts.coursera.org/signin?post_redirect=https%3A%2F%2Fwww.coursera.org%2F), после поиска в Интернете я наткнулся на этот фрагмент кода:

import urllib2, cookielib, urllib

username = "abcdef@abcdef.com"      
password = "uvwxyz"

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'password' : password})
info = opener.open("https://accounts.coursera.org/signin",login_data)
for line in info:
    print line

и некоторые аналогичные коды, но ни один из них не работал для меня, каждый подход приводит ко мне такой тип ошибки:

Traceback (most recent call last):
  File "C:\Python27\Practice\web programming\coursera login.py", line 9, in <module>
    info = opener.open("https://accounts.coursera.org/signin",login_data)
  File "C:\Python27\lib\urllib2.py", line 410, in open
    response = meth(req, response)
  File "C:\Python27\lib\urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python27\lib\urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "C:\Python27\lib\urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "C:\Python27\lib\urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
HTTPError: HTTP Error 404: Not Found

Ошибка из-за протокола https или я что-то упустил?

Я не хочу использовать какие-либо сторонние библиотеки.

2 ответа

Я использую requests для этой цели, и я думаю, что это отличная библиотека Python. Вот пример кода, как это может работать:

import requests
from requests.auth import HTTPBasicAuth

credentials = HTTPBasicAuth('username', 'password')
response = requests.get("https://accounts.coursera.org/signin", auth=credentials)
print response.status_code
# if everything was fine then it prints
>>> 200

Вот ссылка на запросы:

http://docs.python-requests.org/en/latest/

Я думаю, что вам нужно использовать HTTPBasicAuthHandler модуль urllib2, Проверьте раздел "Базовая аутентификация". https://docs.python.org/2/howto/urllib2.html

И я настоятельно рекомендую вам модуль запросов. Это сделает ваш код лучше. http://docs.python-requests.org/en/latest/

Другие вопросы по тегам