Автоматизируйте навигацию в браузере и извлечение данных

StackOverflow https://stackoverflow.com/questions/1098898

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top