Вход в учетную запись 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
Вот ссылка на запросы:
Я думаю, что вам нужно использовать HTTPBasicAuthHandler
модуль urllib2
, Проверьте раздел "Базовая аутентификация". https://docs.python.org/2/howto/urllib2.html
И я настоятельно рекомендую вам модуль запросов. Это сделает ваш код лучше. http://docs.python-requests.org/en/latest/