Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 18, 2011 16:39:37

Sirorezka
От:
Зарегистрирован: 2011-06-17
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Python HTML Fetching

Пытаюсь собрать данные о курсах акций с сайта:
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)
Что сделать, чтобы заставить JAVA-script прислать результаты?



Офлайн

#2 Сен. 19, 2011 10:28:41

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Python HTML Fetching

Необходимо сэмулировать работу яваскрипт - тобишь отправить серверу такой запрос, который ему отправляется яваскриптом, например полный запрос с заголовками:

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
И никаких глупых просьб о включении яваскрипта в браузере…
P.S. Имена ключей в data возможно не все расшифрованы верно…
P.P.S. Python 2.6



Отредактировано (Сен. 19, 2011 10:48:44)

Офлайн

#3 Сен. 21, 2011 17:50:47

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

Python HTML Fetching

а в чем проблема ?



Офлайн

#4 Сен. 21, 2011 20:09:02

kazaff
От:
Зарегистрирован: 2011-08-12
Сообщения: 26
Репутация: +  2  -
Профиль   Отправить e-mail  

Python HTML Fetching

Sirorezka

Если не хочется изворачиваться с ручной отправкой данных js, то можно попробовать spynner. Минусы spynner - неторопливость, это же все-таки настоящий браузер.

Могу посоветовать также по spynner:

Документация
Маленький пример на русском

+посмотреть исходники самого spynner, там в комментариях много интересного.



Офлайн

#5 Сен. 23, 2011 12:21:09

Sirorezka
От:
Зарегистрирован: 2011-06-17
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Python HTML Fetching

diam123, спасибо. Post метод, действительно, сработал.

На счёт spynner, я держал его про запас, если ничего больше не сработает.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version