2014-10-04 3 views
0

Мне нужно зайти на сайт, чтобы получить доступ к его html на странице с защитой входа для проекта, который я делаю.Вход на сайт и извлечение HTML с помощью Python

Я использую this person's ответ со значениями мне нужно:

from twill.commands import * 
go('https://example.com/login') 

fv("3", "email", "[email protected]") 
fv("3", "password", "mypassword") 

submit() 

предположительно это должно войти в меня так, то я бегу:

sock = urllib.urlopen("https://www.example.com/activities") 
html_source = sock.read() 
sock.close() 
print html_source 

Что я думал напечатать HTML из (сейчас), но вместо этого просто дает мне html страницы входа. Я пробовал другие методы (например, с помощью механизации), но получаю идентичный результат.

Что мне не хватает? Некоторые сайты ограничивают этот тип входа или не работают с https или что-то еще? (Сайт FitBit, так как я не мог использовать url в вопросе)

+0

'twill! = Urllib' – falsetru

+0

Вы пытались использовать« https://example.com/activities »(без« www »), используя' urllib'? Я столкнулся с проблемами, когда я смешиваю URL-адреса «www» и «www» ... –

ответ

1

Вы используете одну библиотеку для входа в систему, а другую - для последующей последующей загрузки. twill и urllib не используют данные о ваших сеансах. (Similar issue to this one.) Если вы это сделаете, вам нужно самому управлять cookie сеанса/аутентификацией. В частности, вам нужно скопировать данные cookie + и добавить их в запрос после входа в другую библиотеку.

В противном случае и более логично использовать один и тот же запрос для входа и после входа.

+0

Блестяще, спасибо. Я просто добавил 'go ('https://example.com/activities')' и 'save_html ('textfile.txt')', и он работает в обаянии. – doxyl