Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 16, 2010 23:41:02

creitve
От:
Зарегистрирован: 2010-07-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Основы urllib2.

Суть вопроса - влюбился в питон, решил написать приложение-обработчик таблицы одной бд, чтобы параллельно выучить основы языка. Доступа к бд нет, поэтому логинимся на сайт - получаем таблицу в html - парсим в xml и дальше уже работаем с ним.
Сайт написан перректальным образом, огрехи и ошибки везде, но сейчас не об этом.
Возникла проблема при логине.
Есть три страницы:
первая - страница логина. на ней форма, которая передает методом POST логин и пароль на вторую.
вторая - страница, принимающая логин и пароль, и выдающая меню. Меню содержит ссылки на базу данных с параметрами, передаваемыми методом GET. В том числе передается sessionid (разумно ли открыто передавать sessionid?). Если сразу после логина обновить эту страницу, то оказываешься разлогиненным. То есть фактически логин и старт сессии происходит после перехода на третью страницу.(нормально ли?)
третья страница - собственно таблица бд.
Проблема - после отправки логина-пароля на вторую страницу нужно получить её, чтобы считать ссылку с GET-параметром. Но из гугла я научился делать это тольно одним способом:

req = urllib2.Request('%мой url%', {}, HEADERS)
handle = urllib2.urlopen(req)
print handle.read()
При этом, естественно, получаю незалогиненный вариант второй страницы. Вопрос - как одновременно передать POST запрос и сразу же принять веб-страницу, которая придёт следом, как это было бы в браузере.



Отредактировано (Авг. 16, 2010 23:41:38)

Офлайн

#2 Авг. 17, 2010 00:38:28

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

Основы urllib2.

creitve
При этом, естественно, получаю незалогиненный вариант второй страницы. Вопрос - как одновременно передать POST запрос и сразу же принять веб-страницу, которая придёт следом, как это было бы в браузере.
import urllib, urllib2
data = urllib.urlencode({param1:val1, param2:val2})
request = urllib2.urlopen("%мой url%", data)
print request.read()



Отредактировано (Авг. 17, 2010 00:42:56)

Офлайн

#3 Авг. 17, 2010 00:49:46

creitve
От:
Зарегистрирован: 2010-07-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Основы urllib2.

Vader
creitve
При этом, естественно, получаю незалогиненный вариант второй страницы. Вопрос - как одновременно передать POST запрос и сразу же принять веб-страницу, которая придёт следом, как это было бы в браузере.
import urllib, urllib2
data = urllib.urlencode({param1:val1, param2:val2})
request = urllib2.urlopen("%мой url%", data)
print request.read()
Спасибо, сейчас попробую.
upd: Всё работает, спасибо!



Отредактировано (Авг. 17, 2010 09:51:18)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version