Найти - Пользователи
Полная версия: Python HTML Fetching
Начало » Web » Python HTML Fetching
1
Sirorezka
Пытаюсь собрать данные о курсах акций с сайта:
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 прислать результаты?
diam123
Необходимо сэмулировать работу яваскрипт - тобишь отправить серверу такой запрос, который ему отправляется яваскриптом, например полный запрос с заголовками:
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
evilempirer
а в чем проблема ?
kazaff
Sirorezka

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

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

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

+посмотреть исходники самого spynner, там в комментариях много интересного.
Sirorezka
diam123, спасибо. Post метод, действительно, сработал.

На счёт spynner, я держал его про запас, если ничего больше не сработает.
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