Web scraping

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Веб-скрапінг (від англ. scraping — «вишкрібання», веб-збирання або витягнення веб-даних) являє собою перетворення у структуровані дані інформації з веб-сторінок, які призначені для перегляду людиною за допомогою браузера.

Як правило, виконується за допомогою комп'ютерних програм, що імітують поведінку людини в інтернеті, або з'єднуючись з веб-сервером напряму по протоколу HTTP, або управляючи повноцінним веб-браузером. Але буває і скрапінг за допомогою копіювання даних людиною. Це форма копіювання, в якій конкретні дані збираються та копіюються з інтернету, як правило, в базу даних або електронну таблицю для подальшого пошуку чи аналізу.

Веб-скрапінг включає в себе завантаження та вилучення. Спочатку завантажується сторінка (що робить браузер, коли ви переглядаєте сторінку), після цього можна здійснювати добувати потрібну інформацію. Зміст сторінки може бути проаналізовано, переформатовано, його дані скопійовані в електронну таблицю тощо. Веб-скрапери, як правило, беруть щось із сторінки, щоб використати це для інших цілей деінде. Прикладом може бути пошук і копіювання імен та телефонних номерів або компаній та їх URL-адрес до списку (контактне сканування).

Веб-сторінки побудовані за допомогою текстових мов розмітки (HTML та XHTML) і часто містять велику кількість корисних даних у текстовій формі. Однак більшість веб-сторінок призначені для кінцевих користувачів, а не для зручності автоматичного використання. Через це були створені набори інструментів, які "збирають" веб-вміст. Веб-скрапери — це прикладний програмний інтерфейс для вилучення даних з веб-сайту.

Існують методи, які деякі веб-сайти використовують для запобігання веб-скрапінгу. Наприклад, виявлення та заборона ботів від сканування (перегляду) своїх сторінок. У відповідь на це існують веб-скрапінгові системи, які спираються на використання методів аналізу об'єктної моделі документа, комп'ютерного бачення та обробку тексту на природній мові, щоб імітувати пошук людини, щоб дозволити збирати вміст веб-сторінок для автономного синтаксичного аналізу.

Пов'язані терміни[ред. | ред. код]

Веб-скрапінг, веб-краулінг та індексація, веб-автоматизація[ред. | ред. код]

Веб-скрапінг тісно пов'язаний з краулінгом та індексацією (crawling та indexing). Індексація — упорядкування інформації з метою спрощення пошуку за нею. Індексація виконується за допомогою бота (павука, веб-сканера) і є універсальною методикою, прийнятою більшістю пошукових систем.

На противагу цьому, веб-скрапінг більше фокусується на перетворенні неструктурованих даних в мережі, як правило, в форматі HTML, в структуровані дані, які можуть зберігатися і аналізуватися в центральній, локальній базі даних або таблиці.

Веб-скрапінг також пов'язаний з веб-автоматизацією, що являє собою автоматизацію дій людини за допомогою комп'ютерного програмного забезпечення.

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

Машинозчитувані дані та API[ред. | ред. код]

Слід розрізняти веб-сторінки у форматі HTML, що призначені для інтерпретації браузером та подальшого перегляду людиною, від даних у машинозчитуваних форматах та програмного інтерфейсу (Web API).

Поняття «скрапінг» неможливо застосувати для машинозчитуваних даних, що також завантажуються по протоколу HTTP, бо вони вже знаходяться у тому форматі, що є кінцевим для процесу скрапінгу.

Технології[ред. | ред. код]

Веб-скрапінг це процес автоматичного збору інформації із Всесвітньої павутини. Це поле з активними розробками, що мають спільну мету з семантичної веб-бачення, і є амбітною ініціативою, що як і раніше вимагає проривів в обробці тексту, семантичного розуміння, штучного інтелекту і людино-комп'ютерної взаємодії. Поточні рішення веб-скрапінгу варіюються від Ad-Hoc, вимагаючи людських зусиль, щоб повністю автоматизованих системи, які здатні перетворити цілі сайти в структуровану інформацію, з обмеженнями.

  • Ручне копіювання та вставка: Іноді навіть найкращі технології веб-скрапінг не можуть замінити ручну оцінку людиною і копіювання-вставити, і іноді це може бути єдиним прийнятним рішенням, коли на веб-сайтах свідомо встановлюються бар'єри (CAPTCHA) для перешкоджання автоматизованій обробці.
  • Шаблони (регулярні вирази) — простий, але ефективний підхід для добування інформації з веб-сторінок. Використовуються функції пошуку тексту за шаблонами (регулярними виразами), що підтримуються багатьма мовами програмування.
  • HTTP програмування: Статичні і динамічні веб-сторінки можуть бути вилучені шляхом розміщення HTTP запити на віддаленому веб-сервері за допомогою програмування сокетів.
  • HTML-аналізатори: Багато веб-сайти мають великі колекції сторінок генерується динамічно з базового структурованої джерела, як бази даних. Дані тієї ж категорії, як правило, кодується в подібних сторінок загальним сценарієм або шаблону. В інтелектуальному аналізі даних, програма, яка виявляє такі шаблони в певному джерелі інформації, витягує її зміст і перетворює його в реляційної формі, називається оболонкою. Алгоритми генерації обгортки припустити, що вхідні сторінки в системі індукції обгортки відповідати загальному зразком, і що вони можуть бути легко ідентифіковані з точки зору загальної схеми URL. Більш того, деякі напівструктуровані мови запитів даних, такі як XQuery і HTQL, можуть бути використані для аналізу HTML сторінок і для вилучення і перетворення вмісту сторінки.
  • DOM аналіз: Вбудовуючись у повноцінний веб-браузер, наприклад, Internet Explorer або Mozilla, програми можуть отримати динамічний вміст, згенерований клієнтськими сценаріями. Ці елементи управління браузера також аналізують веб-сторінки в DOM-дереві, на основі яких програми можуть отримати частини сторінок.
  • Веб-скрапінг ПЗ: Є багато інструментів програмного забезпечення, які можуть бути використані для настройки веб-скрапінг рішень. Це програмне забезпечення може спробувати автоматично розпізнавати структуру даних сторінки або забезпечувати інтерфейс записи, що усуває необхідність вручну писати веб-скрапінг код, або деякі скриптові функції, які можуть бути використані для вилучення і перетворення вмісту і інтерфейси баз даних, який може зберігати пошкоджені дані в локальних базах даних.
  • Платформи вертикальної агрегації : Є кілька компаній, які розробили конкретні платформи для вертикальної збірки. Ці платформи створюють і контролюються численними «ботами» для конкретних вертикалей без «людини в циклі» (без безпосередньої участі людини), і без роботи, пов'язаної з конкретним цільовим сайтом. Підготовка включає в себе встановлення базу знань для всієї вертикалі, а потім платформа створює ботів автоматично. Надійність платформи вимірюється якістю інформації, яку він отримує (зазвичай кількість полів) і його масштабованості (як швидко він може масштабуватись до сотень або тисяч сайтів). Ця масштабованість в основному використовується для цільових сайтів з  [[Довгий хвіст|довгим хвостом]], що загальні агрегатори знайти складно або вони є занадто трудомістким для збирання контенту.
  • Розпізнавання семантичних анотацій: Сторінки після виконання скрапінгу може охоплювати метадані або семантичні позначки і анотації, які можуть бути використані для пошуку конкретних помістивши даних. Якщо анотації, впроваджені в сторінках, а мікроформатів робить цей метод можна розглядати як спеціальний випадок DOM розбору. В іншому випадку, анотації, організованих в семантичний шар, зберігаються і управляються окремо від веб-сторінок, так що скребки можуть отримати схему даних і інструкції з цього шару перед скрапінгом сторінок. 
  • Аналізатори веб-сторінки з використанням комп'ютерного зору : Є спроби використовувати машинне навчання і комп'ютерний зір, які намагаються визначити і отримати інформацію з веб-сторінок за допомогою[1]

Правові питання[ред. | ред. код]

Легальність веб-скрапінгу у світі різниться. Деякі веб-сайти забороняють скрапінг у правилах використання, але юридичні наслідки такої заборони не є чіткими.

У Європейському Союзі[ред. | ред. код]

Ryanair проти PR Aviation[ред. | ред. код]

15 січня 2015 року винесено вердикт[2] Європейський Суд справедливості у справі " Ryanair проти PR Aviation ". Згідно нього Ryanair має право блокувати або вимагати дотримання умов інтернет-сайтами для порівняння цін, які копіюють дані з веб-сайту авіакомпанії без її дозволу.

PR Aviation — оператор веб-сайту, що дозволяє користувачам шукати дані польотів low-cost авіакомпаній. Він отримує необхідні дані за допомогою автоматизованих засобів, в тому числі з веб-сайту Ryanair. Перегляд веб-сайту Ryanair передбачає, що відвідувач сайту приймає умови використання шляхом проставлення галочки. Відповідно до цих умов, інформація, що міститься на сайті, може бути використана тільки в приватних та некомерційних цілях, а використання автоматизованих систем або програмного забезпечення для отримання даних з сайту в комерційних цілях є забороненим, якщо таке не передбачено письмовою ліцензійною угодою з Ryanair. Ryanair заявив, що PR Aviation порушили закон про авторське право на унікальну базу даних, і що він діяв всупереч умовам використання веб-сайту, які були прийняті компанією. Після того, як його позов був відхилений у судах першої та апеляційної інстанції Амстердама, Ryanair оскаржив рішеня апеляційного суда Амстердама у Верховному суді Нідерландів. Верховний суд Нідерландів вирішив залишити апеляцію без задоволення[3].

Директиву 96/9/ЄС Європейського парламенту та Ради Європи від 11 березня 1996 року про правовий захист баз даних повинно бути витлумачено в тому сенсі, що його не можна застосовувати до бази даних, що не захищені відповідно до цієї Директиви або законом про авторське право, або права в своєму роді, в результаті чого стаття 6(1), 8 і 15 Директиви не забороняє творцю такої бази даних обмежувати договором — без шкоди для чинного національного законодавства — використання його третіми особами.

Посилання[ред. | ред. код]