LINUX.ORG.RU

Python- отправить форму


0

0

С помощью urllib2, скрипту на сервере передаются некоторые данные. Этот скрипт возвращает форму

<HTML>
<HEAD>
</HEAD>
<body onLoad="document.forms[0].submit();">
<form method=post action="https://***********/GetForm.cgi">
<INPUT type='hidden' name='' value=''>
<INPUT type='hidden' name='' value=''>
<INPUT type='hidden' name='' value=''>
</form>
</body>
</html>

Нужно отправить эту форму. Как это сделать?
Перемещено Pi из Development

Ответ на: комментарий от Pi

гугл много чего говорит, но все это не подходит в моем случае.
urllib2.urlopen(url[, data][, timeout])
для метода POST должна присутсвовать data "in the standard application/x-www-form-urlencoded format", а у меня форма html. Кроме того,что я показал в ней есть много других данных.
И как ее отправлять?

another_anonym
() автор топика
Ответ на: комментарий от another_anonym

откровение раз: html – это такой формат разметки, который в твоем случае только рендерит поля. все.

откровение два: http - это такой протокол передачи данных. не передачи html, а данных. и когда у тебя субмитится форма, браузер передает данные вида "ключь - значение". все.

откровение три: поля в html со "standard application/x-www-form-urlencoded format" имеют очень даже интим^W^W^формальную связь

Pi ★★★★★
()

когда-то была такая задача, всё быстро нашёл в гугле. Ищи по словам python forms POST

true_admin ★★★★★
()

Теперь форму вроде отправляет, но сервер все-равно данные не принимает.
Какие библиотеки должны быть для поддержки ssl в питоне?

import urllib2
import ClientForm

urllib2.install_opener(urllib2.build_opener(urllib2.HTTPCookieProcessor, urllib2.HTTPSHandler))

data='orderid=******&amount=*****&currency=2&email=&lastname=&address=&firstname=&phone=&middlename='
conn = urllib2.Request('http://********/cgi-bin/cybercrd.cgi', data)
conn.add_header('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; U)')
response = urllib2.urlopen(conn)

forms = ClientForm.ParseResponse(response, backwards_compat=False)
#response.close()
form = forms[0]

request2 = form.click()  # urllib2.Request object
response2 = urllib2.urlopen(request2)

print response2.geturl()
print response2.info()  # headers
#print response.read()  # body
#response2.close()

#print response.read()
x = response2.read()
temp = open("nbn.html", "w")
temp.write(x)
temp.close()

another_anonym
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.