2009-07-08 5 views
1

Я пытаюсь автоматизировать извлечение данных с веб-сайта, и я действительно не знаю с чего начать. Один из наших поставщиков предоставляет нам доступ к некоторым данным регистрации оборудования через онлайн-приложение «Business Objects 11». Если вы не знакомы с этим онлайн-приложением, подумайте об этом как о генераторе отчетов на основе сети. Проблема в том, что я пытаюсь контролировать большое количество оборудования, и этот поставщик только создал запрос на извлечение одного журнала за раз. Этот запрос принимает номер оборудования, дату начала и дату окончания ... Что еще хуже, мы можем экспортировать только в двоичный формат Excel, так как экспорт «csv» нарушен, и они отказываются исправлять его ... следовательно, мы ограничены ограничением строки 65 536 Excel ... (что составляет в моем случае 3-4 дня записи данных). Я не могу создать новое расследование, поскольку только у поставщика есть необходимые права администратора.Автоматизация навигации браузера и извлечение данных

Какой, по вашему мнению, самый элегантный способ запускать множество запросов (около 800) через веб-интерфейс? Думаю, я мог бы жестко указывать позиции мыши, щелкнуть события и нажатия клавиш с задержками и все остальное ... Но должен быть лучший способ.

Я читал о сценариях AutoHotKey и AutoIt, но они, похоже, ограничены в отношении того, что они могут делать в Интернете. Кроме того ... Я застрял в IE6 ... Но если вы знаете способ, который связан с другим браузером, я по-прежнему очень заинтересован в вашем ответе.

(когда у меня есть лог-файлы локально, извлечение данных является не проблема)

ответ

1

Есть некоторые вещи, которые вы можете попробовать. Если сайт является html, а отчеты могут запрашиваться с помощью простого POST или GET, то urlib/urlib2 и cookielib Python-модулей должно быть достаточно для получения документа excel.

Тогда вы можете попробовать следующее: xlrd извлечь данные из Excel.

Кроме того, взгляните на: http://pamie.sourceforge.net /. Я никогда не пробовал это сам, но выглядел многообещающим и простым в использовании.

+0

Спасибо, Pamie отлично работает! Единственная проблема, с которой я столкнулся сейчас, - заставить ее работать с некоторыми пользовательскими виджетами приложений :((какой-то пользовательский текстовый ящик в кадре заголовка ...) Теперь использование AutoIt для некоторых сложных частей кажется жизнеспособным решением Может быть, кто-то знает способ ограничения этого ограничения. –

0

Обычно, я бы предложил не использовать IE (или любой другой браузер) на всех. Помните, что программное обеспечение веб-браузера - это просто прокси-программы для создания http-запросов и отображения результатов в значимых целях. Существуют и другие способы, с помощью которых можно создавать похожие HTTP-запросы и обрабатывать ответы. Почти каждый современный язык имеет встроенный в него API. Это называется очисткой экрана или очисткой веб-страниц.

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

Типичный пример использования C#, где вы просто получить HTML результат в виде строки будет выглядеть следующим образом:

new System.Net.WebClient().DownloadString("http://example.com"); 

Вы затем разобрать строку, чтобы найти какие-либо поля, нужно и отправить еще один запрос. Класс WebClient также имеет метод .DownloadFile(), который может оказаться полезным для извлечения файлов excel.

+0

Сам язык не является проблемой.Я больше разрабатываю C/C++, но я много работал с скриптами VB/VBS, C#, Java, Bash и т. Д. Я немного работал с PHP, но это касается его, когда дело доходит до «веб-языков». Вы правы в отношении http-запросов, но у меня есть впечатление, что синтаксический анализ сырых ответов от такого веб-приложения будет очень сложным ... Или, может быть, нет ... –

+0

@Decapsuleur: Анализ html-ответа с регулярными выражениями выглядит дерьмовым, но работает на удивление хорошо для автоматически сгенерированных страниц. –

+0

Я не буду использовать регулярное выражение - он получает настоящие уродливые соответствия вложенным тегам и тому подобное. Ручная функция строки в конечном итоге упрощена для реализации и обслуживания. –

0

Поскольку вы можете использовать .NET, вам следует рассмотреть возможность использования элемента управления Windows Forms WebBrowser. Вы можете автоматизировать его, чтобы перейти на сайт, нажать кнопки и т. Д. После загрузки страницы отчета вы можете использовать код для навигации по HTML DOM, чтобы найти нужные данные - никаких регулярных выражений.

Я сделал что-то вроде этого лет назад, чтобы извлечь данные аукциона с eBay.