После постбэка JavaScript с использованием автоматизации COM + IE для сохранения текстового файла - PullRequest
1 голос
/ 15 июля 2009

Я хочу автоматизировать архивирование данных на этой странице http://energywatch.natgrid.co.uk/EDP-PublicUI/Public/InstantaneousFlowsIntoNTS.aspx, и загрузить в базу данных.

Я использовал python и win32com (за корпоративным прокси-сервером, поэтому прямого сетевого доступа нет, поэтому я использую IE для этого) на других страницах, чтобы сделать это. Мой вопрос заключается в том, что в любом случае можно извлечь и сохранить данные CSV, которые возвращаются при нажатии на ссылку «Нажмите здесь, чтобы загрузить данные» внизу? Эта ссылка является постбэком javascript и будет гораздо проще, чем переформатировать саму страницу в CSV.

. Конечно, я не обязательно обязуюсь использовать Python, если можно предложить более простую альтернативу?

Спасибо

1 Ответ

1 голос
/ 15 июля 2009

Вот лучший способ, используя механизировать библиотеку.


import mechanize

b = mechanize.Browser()
b.set_proxies({'http': 'yourproxy.corporation.com:3128' })

b.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)')]
b.open("http://energywatch.natgrid.co.uk/EDP-PublicUI/Public/InstantaneousFlowsIntoNTS.aspx")

b.select_form(name="form1")
b.form.find_control(name='__EVENTTARGET').readonly = False
b.form['__EVENTTARGET'] = 'a1'

print b.submit().read()

Обратите внимание, как вы можете указать, что Mechanize должен использовать прокси-сервер (также возможно использование обычного urllib). Также обратите внимание, как имитация обратной передачи JavaScript в ASP.NET.

Edit:

Если ваш прокси-сервер использует проверку подлинности NTLM, это может быть проблемой. AFAIK urllib2 не обрабатывает проверку подлинности NTLM. Вы можете попробовать NTLM Авторизационный прокси-сервер . Из файла readme :


ЧТО ТАКОЕ «Прокси-сервер авторизации NTLM»?

'NTLM Authorization Proxy Server' - это прокси-подобное программное обеспечение, которое авторизует вас на прокси-сервере MS и на веб-серверах (особенно ISS), использующих собственный NTLM MS метод авторизации, и он может изменить некоторые значения в заголовке запроса вашего клиента так что эти запросы будут выглядеть как запросы, сделанные MS IE. Написано на Python язык. См. Www.python.org.


...