Как экранные скребки работают? [закрытый]

20
задан 5 revs, 4 users 67% 10 November 2010 в 09:42
поделиться

9 ответов

Технически, screenscraping является любой программой, которая захватывает данные дисплея другой программы и поглощает его для своего собственного использования.

Довольно часто, screenscaping относится к веб-клиенту, который анализирует страницы HTML целенаправленного веб-сайта для извлечения отформатированных данных. Это сделано, когда веб-сайт не предлагает канал RSS или API REST для доступа к данным программным способом.

Один пример библиотеки, пользовавшейся с этой целью, Hpricot для Ruby, который является одним из лучше спроектированных синтаксических анализаторов HTML, используемых для анализа экранных данных.

24
ответ дан 29 November 2019 в 23:02
поделиться

Много точных ответов здесь.

то, Что никто не сказал, , не делают этого!

Анализ экранных данных - то, что Вы делаете, когда никто не предоставил Вам разумный машиночитаемый интерфейс. Трудно записать, и хрупкий.

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

, Конечно, иногда у Вас нет выбора :(

14
ответ дан 29 November 2019 в 23:02
поделиться

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

Первоначально это было сделано с символьными/терминальными выводами от мейнфреймов для извлечения данных или обновления систем, которые были архаичны или не непосредственно доступны конечному пользователю. в современных терминах это обычно означает анализировать вывод из Запроса HTTP, чтобы извлечь данные или принять некоторые другие меры. с появлением веб-сервисов должен был замереть этот вид вещи, но не все приложения предоставляют хороший API для взаимодействия с.

7
ответ дан 29 November 2019 в 23:02
поделиться

Экранный скребок загружает страницу HTML и вытаскивает данные, заинтересованные или путем поиска известных маркеров или парсинга его как XML или некоторых такой.

2
ответ дан 29 November 2019 в 23:02
поделиться

В первые годы ПК экранные скребки эмулировали бы терминал (например, IBM 3270) и симулировали бы быть пользователем, чтобы в интерактивном режиме извлечь, обновить информацию о мейнфрейме. В более свежие времена понятие применяется к любому приложению, которое обеспечивает интерфейс через веб-страницы.

С появлением SOA, screenscraping является удобным способом, которым к сервисам включают приложения, которые не являются. В тех случаях очистка веб-страницы является взятым более общим подходом.

2
ответ дан 29 November 2019 в 23:02
поделиться

Вот крошечный бит анализа экранных данных, реализованного в Javascript, с помощью jQuery (не общий выбор, заметьте, так как очистка обычно является действием клиент-сервер):

//Show My SO Reputation Score
var repval = $('span.reputation-score:first'); alert('StackOverflow User "' + repval.prev().attr('href').split('/').pop() + '" has (' + repval.html() + ') Reputation Points.');

, Если Вы работаете Firebug, скопируйте вышеупомянутый код и вставка он в Консоль и посмотрите его в действии прямо здесь на этой странице Question.

РАЗ ТАК изменения структура DOM / имена классов элемента / конвенции пути URI, все ставки выключены, и она не может работать больше - это - обычный риск в усилиях анализа экранных данных, где нет никакого контракта/понимания между сторонами (скребок и царапанье [ да, я просто изобрел Word ]).

2
ответ дан 29 November 2019 в 23:02
поделиться

Технически, screenscraping является любой программой, которая захватывает данные дисплея другой программы и поглощает его для своего собственного использования. В первые годы ПК экранные скребки эмулировали бы терминал (например, IBM 3270) и симулировали бы быть пользователем, чтобы в интерактивном режиме извлечь, обновить информацию о мейнфрейме. В более свежие времена понятие применяется к любому приложению, которое обеспечивает интерфейс через веб-страницы.

С появлением SOA, screenscraping является удобным способом, которым к сервисам включают приложения, которые не являются. В тех случаях очистка веб-страницы является взятым более общим подходом.

Довольно часто, screenscaping относится к веб-клиенту, который анализирует страницы HTML целенаправленного веб-сайта для извлечения отформатированных данных. Это сделано, когда веб-сайт не предлагает канал RSS или API REST для доступа к данным программным способом.

Обычно у Вас есть страница HTML, которая содержит некоторые данные, которые Вы хотите. То, что Вы делаете, является Вами, пишут программу, которая выберет ту веб-страницу и попытку извлечь те данные. Это может быть сделано с синтаксическими анализаторами XML, но для простых приложений я предпочитаю использовать регулярные выражения, чтобы соответствовать определенному месту в HTML и извлечь необходимые данные. Иногда это может быть хитро для создания хорошего регулярного выражения, тем не менее, потому что окружающий HTML появляется многократно в документе. Вы всегда хотите соответствовать уникальному объекту настолько близко, как Вы можете к данным, в которых Вы нуждаетесь.

Анализ экранных данных - то, что Вы делаете, когда никто не предоставил Вам разумный машиночитаемый интерфейс. Трудно записать, и хрупкий.

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

Одним примером библиотеки, пользовавшейся с этой целью, является Hpricot для Ruby, который является одним из лучше спроектированных синтаксических анализаторов HTML, используемых для анализа экранных данных.

2
ответ дан 29 November 2019 в 23:02
поделиться

У Вас есть страница HTML, которая содержит некоторые данные, которые Вы хотите. То, что Вы делаете, является Вами, пишут программу, которая выберет ту веб-страницу и попытку извлечь те данные. Это может быть сделано с синтаксическими анализаторами XML, но для простых приложений я предпочитаю использовать регулярные выражения, чтобы соответствовать определенному месту в HTML и извлечь необходимые данные. Иногда это может быть хитро для создания хорошего регулярного выражения, тем не менее, потому что окружающий HTML появляется многократно в документе. Вы всегда хотите соответствовать уникальному объекту настолько близко, как Вы можете к данным, в которых Вы нуждаетесь.

2
ответ дан 29 November 2019 в 23:02
поделиться

Очистка экрана - это то, что вы делаете, когда никто не предоставил вам разумный машиночитаемый интерфейс. Это сложно писать, и это хрупко.

Не совсем так. Не думаю, что я преувеличиваю, когда говорю, что у большинства разработчиков недостаточно опыта, чтобы писать достойные API. Я' Я работал с компаниями, занимающимися очисткой экрана, и часто API-интерфейсы настолько проблемны (от загадочных ошибок до плохих результатов) и часто не предоставляют полную функциональность, которую предоставляет веб-сайт, что может быть лучше очистить экран (очистить веб-страницы, если хотите) . Порталы экстранета / веб-сайтов используются моим большим количеством клиентов / брокеров, чем клиентов API, и поэтому они лучше поддерживаются. В крупных компаниях изменения в порталах экстранета и т. Д. Происходят нечасто, обычно потому, что изначально они были переданы на аутсорсинг, а сейчас просто обслуживаются. Я больше имею в виду очистку экрана, при которой вывод настраивается, например, рейс по определенному маршруту и ​​времени, стоимость страховки, стоимость доставки и т. Д.

С точки зрения выполнения, это может быть так же просто, как веб-клиент. содержимое страницы в строку и использование ряда регулярных выражений для извлечения нужной информации. страница и вытаскивает данные заинтересован либо поиском известные токены или парсинг его как XML или некоторые такие.

Это более чистый подход, чем регулярное выражение ... в теории ..., однако на практике это не так просто, учитывая, что большинство документов необходимо будет нормализовать до XHTML, прежде чем вы сможете использовать XPath через него, в итоге мы обнаружили тонко настроенные регулярные выражения были более практичными.

1
ответ дан 29 November 2019 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: