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

Как работают скребки экрана?

Я слышал, как люди постоянно пишут эти программы, и я знаю, что они делают, но как они на самом деле это делают? Я ищу общие понятия.

4b9b3361

Ответ 1

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

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

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

Ответ 2

Здесь много точных ответов.

То, что никто не сказал, не делает этого!

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

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

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

Ответ 3

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

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

Ответ 4

Скребок экрана загружает страницу html и вытаскивает данные, интересующиеся либо поиском известных токенов, либо анализом их как XML или некоторых таких.

Ответ 5

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

Ответ 6

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

Ответ 7

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

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

Ответ 9

Здесь крошечный бит скрипинга экрана, реализованный в 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, скопируйте приведенный выше код и вставьте его в консоль и увидите его в действии прямо здесь, на этой странице вопросов.

Если SO изменяет названия DOM-структуры/имена классов/URI-пути, все ставки отключены, и это может не сработать, - что обычный риск при скрипировании экрана ведет к тому, что между сторонами нет контракта/понимания (скребок и scrapee [да, я только что придумал слово]).

Ответ 10

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

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

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

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

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

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

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

Ответ 11

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

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

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

string pageContents = new WebClient("www.stackoverflow.com").DownloadString();
int numberOfPosts = // regex match

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

Скребок экрана загружает html страницы и вытаскивает данные заинтересованных в поиске известных токенов или разбора его как XML или некоторые из них.

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