Подтвердить что ты не робот

Экранная скребка с веб-страницы с большим количеством Javascript

Мне было предложено написать приложение, в котором экран сбрасывает информацию с веб-страницы интрасети и представляет определенную информацию из нее в удобном для просмотра формате. Веб-страница представляет собой настоящий беспорядок и требует, чтобы пользователь нажал на полдюжины значков, чтобы узнать, прибыл или получил заказанный товар. Как вы можете себе представить, пользователи находят это раздражающим, чтобы сказать наименее, и было бы неплохо иметь приложение, которое каждый может использовать, который перечисляет состояние своих заказов на одном экране.

Да, я знаю, что лучшим решением будет перезаписать веб-приложение, но это потребует вызова в вендоре и будет стоить нам маленькой удачи.

В любом случае, глядя на это, я обнаружил, что веб-страница, которую я хочу очистить, - это в основном Javascript (хотя он не использует никаких методов AJAX). Кто-нибудь знает, существует ли библиотека или программа, которую я мог бы подавать с помощью Javascript, и которая затем выплевывала DOM для моего приложения для разбора?

Я могу написать приложение на любом языке, но я предпочитаю JavaFX, чтобы я мог играть с ним.

Спасибо за ваше время.

Ян

4b9b3361

Ответ 1

Вы можете использовать HTMLunit Это библиотека классов java, созданная для автоматизации просмотра без необходимости управления браузером, и она интегрирует движок Javascript Mozilla Rhino для обработки javascript на загружаемых страницах. Для этого также есть обертка JRuby, названная Celerity. Поддержка javascript на данный момент не идеальна, но если ваши страницы не используют много хаков, все должно работать нормально, производительность должна быть лучше, чем управление браузером. Кроме того, вам не нужно беспокоиться о том, что cookie сохраняется после того, как вы очистились, и все другие неприятные вещи, связанные с управлением браузером (история, автозаполнение, временные файлы и т.д.).

Ответ 2

Поскольку вы говорите, что AJAX не используется, вся информация присутствует в источнике HTML. Javascript просто отображает его на основе пользовательских кликов. Поэтому вам нужно перестроить способ работы приложения, проанализировать html и код javascript и извлечь полезную информацию. Это строго бизнес разбора текста - вы не должны заниматься запуском javascript и созданием нового DOM. Это было бы намного сложнее сделать.

Если бы использовался AJAX, ваша работа была бы проще. Вы можете легко узнать, как работают службы AJAX (возможно, получая JSON и XML) и извлекать информацию.

Ответ 3

Вы можете использовать использование greasemonkey JS. greasemonkey - это очень мощное дополнение Firefox, которое позволяет вам запускать свой собственный script вместе с вашим сайтом. Это позволяет вам изменять способ отображения веб-сайта, добавления или удаления содержимого. Вы даже можете использовать его для поиска в стиле AJAX и добавления динамического контента.

Если ваш инструмент предназначен для домашнего использования, и пользователи с удовольствием используют Firefox, это может быть победителем.

Привет

Ответ 4

Я бы пошел с Perl Win32:: IE:: Mechanize, который позволяет вам автоматизировать Internet Explorer. Вы должны иметь возможность нажимать на значки и извлекать текст, позволяя MSIE выполнять раздражающие задачи по обработке всех JS.

Ответ 5

Я согласен с ответом kgiannakakis. Я был бы удивлен, если бы вы не смогли перепроектировать javascript, чтобы определить, откуда поступает информация, а затем написать несколько простых скриптов Python, используя Urllib2 и библиотека Beautiful Soup, чтобы очистить ту же информацию.

Если Python и соскабливание - новая идея, там есть отличный учебник о том, как это сделать.

[Изменить] Похоже, что версия механизации Python. Время переписать некоторые скребки, которые я разработал некоторое время назад!: -)

Ответ 6

Я предлагаю веб-скребок IRobotSoft. Это специальное бесплатное программное обеспечение для очистки экрана с лучшей поддержкой javascript. Вы можете создавать и тестировать робота с его визуальным интерфейсом. Вы также можете встроить его в свое приложение, используя его элемент управления ActiveX и скрыть окно браузера.

Ответ 7

Я создал проект site2archive, который использует phantomJs для рендеринга, включая материал JS и wget для очистки. phantomJs основан на Webkit, который обеспечивает аналогичную среду просмотра, такую ​​как Safari и Google Chrome.