Форум сайта python.su
Пытаюсь собрать данные о курсах акций с сайта:
http://www.finam.ru/analysis/export/default.asp
Но каждый раз, когда я пытаюсь отослать данные в Java Script возникает ошибка:
Следует влючить JAVA-script в настройках броузера…
На данный момент написал:
url="http://195.128.78.52/export9.out"
#url="http://www.finam.ru/analysis/export/default.asp"
data = {}
data["market"]=1
url_values = urllib.urlencode(data)
full_url= url + '?' + url_values
page=urlopen(full_url)
print (page)
Офлайн
Необходимо сэмулировать работу яваскрипт - тобишь отправить серверу такой запрос, который ему отправляется яваскриптом, например полный запрос с заголовками:
GET http://195.128.78.52/GAZP_110919_110919.txt?d=d&market=1&em=16842&df=19&mf=8&yf=2011&dt=19&mt=8&yt=2011&p=7&f=GAZP_110919_110919&e=.txt&cn=GAZP&dtf=1&tmf=1&MSOR=0&sep=1&sep2=1&datf=2&at=1 HTTP/1.0
User-Agent: Opera/9.80 (Windows NT 5.1; U; ru) Presto/2.9.168 Version/11.51 Paros/3.2.13
Host: 195.128.78.52
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Proxy-Connection: Keep-Alive
Content-length: 0
#-*-encoding:UTF-8-*-
import urllib
import urllib2
url="http://195.128.78.52/export9.out"
data={
"d":"d",
"market":1, #Секция рынка
"em":16842, #Контракт
"df":19, #Число с...
"mf":8, #Месяц с...
"yf":2011, #Год с...
"dt":19, #Число до...
"mt":8, #Месяц до...
"yt":2011, #Год до...
"p":7, #Периодичность
"f":"GAZP_110919_110919", #Имя выходного файла
"e":".txt", #Расширение выходного файла
"cn":"GAZP", #Имя контракта
"dtf":1, #Формат даты
"tmf":1, #Формат времени
"MSOR":0, #Выдавать время
"sep":1, #Разделитель полей
"sep2":1, #Разделитель разрядов
"datf":2, #Формат записи в файл
"at":1, #Добавить заголовок файла
}
url_values = urllib.urlencode(data)
page=urllib2.urlopen(url, url_values).read()
print page
Отредактировано (Сен. 19, 2011 10:48:44)
Офлайн
а в чем проблема ?
Офлайн
Sirorezka
Если не хочется изворачиваться с ручной отправкой данных js, то можно попробовать spynner. Минусы spynner - неторопливость, это же все-таки настоящий браузер.
Могу посоветовать также по spynner:
Документация
Маленький пример на русском
+посмотреть исходники самого spynner, там в комментариях много интересного.
Офлайн
diam123, спасибо. Post метод, действительно, сработал.
На счёт spynner, я держал его про запас, если ничего больше не сработает.
Офлайн