Найти - Пользователи
Полная версия: Вопрос про получение данных
Начало » Network » Вопрос про получение данных
1
akolesnikov
Добрый вечер!
Собственно, задача.
Есть сайт банка 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, но хотелось бы кроссплатформенное решение, желательно без сторонних модулей.
akolesnikov
Пробовал httplib (request), urllib (POST). Про поля “hidden” тоже не забыл, но результата нет(
Ferroman
Посмотреть куда именно обращается джаваскрипт при сабмите.
Можно с помощью разных плагинов к фаерфоксу или wireshark'ом
pasaranax
Надо смотреть отправляемые заголовки. Я пользуюсь вот этим дополнением к файрфоксу.
А потом черзе urllib отправляю.
akolesnikov
спасибо! а то отсутствие поля “action” и href=“#” ставило в тупик((
Попробую отпишусь.
akolesnikov
Как и обещал, отписываюсь. Все получилось, причем самое интересное что плагин для ФФ показал запрос 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()
Ferroman
 href="#"
Так сразу бы и сказал. При таком урле отправляет на тот же адрес, на котором форма.
akolesnikov
Так сразу и сказал)
Все равно спасибо, теперь умею пользоваться отличной утилитой (чтение хедеров)
Ferroman
В первом посте нет про “#” в ссылке-сабмите.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB