2009-05-13 4 views
17

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

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

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

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

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

Ян

+6

Ahhhhh ... Я люблю запах свежемолотого экрана Царапины HTML утром .... –

+0

Проверить этот пост селеном http://stackoverflow.com/questions/125177/whats -a-good-tool-to-screen-scrape-with-javascript-support – osager

ответ

8

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

1

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

+0

Мне нравится Perl, но это веб-приложение несовместимо с IE! Из того, что мне говорят только его Firefox и Safari. – IanW

5

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

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

+1

Спасибо за ваш ответ. Я только что посмотрел на источник JS и HTML из веб-приложения, и есть некоторые вызовы AJAX, которые я раньше не замечал. – IanW

1

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

Если Python и соскабливание являются новой идеей, есть некоторые отличные tutorials, доступные о том, как идти.

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

4

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

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

С уважением

+0

Спасибо, Greasemonkey выглядит хорошо, что я раньше этого не слышал. К сожалению некоторые из моих пользователей не могут установить дополнение к своей установке Firefox, поэтому я не думаю, что смогу использовать его. – IanW

2

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

1

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

Смежные вопросы