Как использовать Python для входа на веб-страницу и получения файлов cookie для последующего использования? - PullRequest
141 голосов
/ 10 октября 2008

Я хочу загрузить и проанализировать веб-страницу, используя python, но для доступа к ней мне нужно установить пару файлов cookie. Поэтому мне нужно сначала войти через https на веб-страницу. Момент входа в систему включает отправку двух параметров POST (имя пользователя, пароль) в /login.php. Во время запроса на вход в систему я хочу извлечь файлы cookie из заголовка ответа и сохранить их, чтобы использовать их в запросе для загрузки веб-страницы /data.php.

.

Как бы я это сделал в python (желательно 2.6)? Если возможно, я хочу использовать только встроенные модули.

Ответы [ 2 ]

155 голосов
/ 24 августа 2012

Вот версия, использующая отличную библиотеку запросов :

from requests import session

payload = {
    'action': 'login',
    'username': USERNAME,
    'password': PASSWORD
}

with session() as c:
    c.post('http://example.com/login.php', data=payload)
    response = c.get('http://example.com/protected_page.php')
    print(response.headers)
    print(response.text)
146 голосов
/ 10 октября 2008
import urllib, urllib2, cookielib

username = 'myuser'
password = 'mypassword'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'username' : username, 'j_password' : password})
opener.open('http://www.example.com/login.php', login_data)
resp = opener.open('http://www.example.com/hiddenpage.php')
print resp.read()

resp.read() - это прямой HTML-код страницы, которую вы хотите открыть, и вы можете использовать opener для просмотра любой страницы, используя ваш файл cookie сессии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...