Форум сайта python.su
Добрый вечер!
Собственно, задача.
Есть сайт банка Raffeisen. Страничка h**p://www.raiffeisen-capital.ru/fonds/unitinvestmenttrust/telecom/calculator/ (инвестиционный калькулятор). Задача - заполнить автоматически пункты (name in html) “sum”, “investment_date”, “redemption_date” (последнее получаю как time.strftime('%d.%m.%Y', time.gmtime())', в сгенерированной странице выдрать список (<ol>) с данными. Проблема вся в том, что отправка данных на сервер происходит как javascript:form.submit(), а я не врубаюсь как это организовать на питоне, + в <form> нет пункта “action” - не понятно, куда слать данные. Как решить проблему?
ОС - Ubuntu, но хотелось бы кроссплатформенное решение, желательно без сторонних модулей.
Отредактировано (Окт. 26, 2009 17:41:40)
Офлайн
Пробовал httplib (request), urllib (POST). Про поля “hidden” тоже не забыл, но результата нет(
Офлайн
Посмотреть куда именно обращается джаваскрипт при сабмите.
Можно с помощью разных плагинов к фаерфоксу или wireshark'ом
Офлайн
Надо смотреть отправляемые заголовки. Я пользуюсь вот этим дополнением к файрфоксу.
А потом черзе urllib отправляю.
Отредактировано (Окт. 26, 2009 18:38:43)
Офлайн
спасибо! а то отсутствие поля “action” и href=“#” ставило в тупик((
Попробую отпишусь.
Офлайн
Как и обещал, отписываюсь. Все получилось, причем самое интересное что плагин для ФФ показал запрос POST, а у меня заработало с GET))
Итоговый скрипт:
import urllib, time
URL='http://www.raiffeisen-capital.ru/fonds/unitinvestmenttrust/telecom/calculator'
SUM='110000'
investment_date='16.10.2007'
redemption_date=time.strftime('%d.%m.%Y', time.gmtime())
params=urllib.urlencode({'funds':'11376', 'sum':SUM, 'investment_date':investment_date, 'redemption_date':redemption_date, 'calculator.purchase-agent-id.20065652-B556-4CAB-A52F-C6B08E1BE2D8':'B01E9785-0685-4EFC-A3B7-E5C2AA432034', 'calculator.sale-agent-id.20065652-B556-4CAB-A52F-C6B08E1BE2D8':'B01E9785-0685-4EFC-A3B7-E5C2AA432034', 'tax_rate':'1', 'DoCalc':'1'})
con=urllib.urlopen(URL+'?%s'%params)
data=con.read()
data=data[data.find('<OL>'):data.find('</OL>')+5]
print data
f=open('/home/alex/tmp.html' , 'w')
f.write(data)
f.close()
Офлайн
href="#"
Офлайн
Так сразу и сказал)
Все равно спасибо, теперь умею пользоваться отличной утилитой (чтение хедеров)
Офлайн
В первом посте нет про “#” в ссылке-сабмите.
Офлайн