Есть два способа
Как я уже говорил, вы используете саржу или механизацию, так как саржа - это просто обертка над механизацией, вы можете просто использовать механизацию (http://wwwsearch.sourceforge.net/mechanize/),, но для использования механизации вам может понадобиться взломать см. импортировать модуль механизации в скрипт Python для более подробной информации
Сделай это нелегко и научись чему-нибудь, занимаясь этим
Давайте посмотрим, как войти в Yahoo
a) загляните на страницу (https://login.yahoo.com/config/login_verify2?&.src=ym)) и посмотрите, как выглядит форма, вы можете проверять firebug вместо просмотра необработанного html.
б) форма имеет логин и passwd два поля, плюс еще некоторые скрытые поля позволяют игнорировать их на данный момент, поэтому до сих пор у нас есть
URL-адрес формы действия = "https://login.yahoo.com/config/login?"
form_data = {'login': 'my_login', 'passwd': 'my_passwd'}
в) мы можем опубликовать вышеуказанные данные на правильный URL-адрес публикации, и это может сработать, но обычно нам нужно перейти на другие страницы, и если у нас нет cookie, он снова запросит логин. так что давайте использовать банку печенья, например
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
form_data = urllib.urlencode(form_data)
# data returned from this pages contains redirection
resp = opener.open(url, form_data)
d) теперь страница из Yahoo перенаправляет на другие страницы, например, если я захочу увидеть страницу почты, я сейчас перейду к ней, и куки позаботятся об аутентификации, например,
resp = opener.open('http://mail.yahoo.com')
print resp.read()
Если вы видите распечатку с надписью: «xxxx | logout, Хм ... ваш браузер официально не поддерживается». это означает, что я вошел в систему :), но, поскольку почта Yahoo является страницей ajax и не поддерживает мой простой браузер сценариев, мы можем обойти этот инструмент, подделав тип браузера и сделав много всего.
Вот окончательный код
import urllib, urllib2, cookielib
url = "https://login.yahoo.com/config/login?"
form_data = {'login' : 'your-login', 'passwd' : 'your-pass'}
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
form_data = urllib.urlencode(form_data)
# data returned from this pages contains redirection
resp = opener.open(url, form_data)
# yahoo redirects to http://my.yahoo.com, so lets go there insetad
resp = opener.open('http://mail.yahoo.com')
print resp.read()
Вам стоит посмотреть код Mechanzie или ссылки вроде этого http://www.voidspace.org.uk/cgi-bin/voidspace/downman.py?file=cookielib_example.py, чтобы увидеть, как они это делают.
мы можем опубликовать эти данные