Як правильно грабувати сайти

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

Що потрібно для початку?

Запуск граббера: періодичність та способи.

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

Від сюди слід питання: як же запускати граббер? По-перше, потрібно відразу запам'ятати, що запускати граббер кожен раз при завантаженні сторінки - шкідливо для швидкості завантаження сайту і для сервера. Крім того, якщо ви не зовсім чесно заімствуете контент, то вас буде простіше знайти. Тому залишаються два варіанти запуску: руками і по chron. Перший метод, можливо, буде гідною кандидатурою, якщо ви грабуєте редкообновляемий сайт. Другий спосіб підходить для регулярних грабів сайту і найбільш автоматизований.

Що брати зі сторінки при грабе?

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

Грабувати чи картинки?

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

Крім того, потрібно враховувати специфіку об'єкта граба. Якщо це погода з зображенням хмарності та опадів, то, можливо, має сенс складати всі ці картинки у себе і не грабувати їх зайвий раз. Якщо у мене вже є хмаринка, навіщо мені знову качати її?

Як зберігати сграбленние дані?

Це особиста справа кожного. Ви можете пхати їх в БД, можете зберігати у вигляді xml. Я пропоную формувати дані в готовий html і зберігати цей готовий до вживання шматочок десь недалеко. При формуванні сторінки, нам не доведеться робити вибірки з БД або парсити xml. Нам потрібно буде тільки взяти файл і вставити його туди, куди потрібно. Швидко і сердито.

Як визначити оновився сайт?

Нікому не хочеться захаращувати базу зайвими даними. При грабе стрічок новин буває важливо уникнути дублювання інформації. Щоб не засмічувати бази, потрібно визначати чи є у нас вже отримана інформація чи ні. Я пропоную користуватися функцією md5 () в php або crypt в Perl. Ці функції повертають унікальний хеш-код рядка-параметра. Потрібно обчислити md5 щойно отриманої записи і md5-коди наявних записів. Якщо вони збігаються - запис вже існує. Якщо немає - пора качати :)

Ось такі мої міркування з приводу грабів. Напевно, скоро напишу статейку, де покажу як можна грабувати що-небудь. Наприклад, видачу Яндекса, стрічку RSS або той же прогноз погоди. Що вам більше цікаво?

Ви можете замовити грабер сайту будь-якої складності у мене. Вартість залежить від ваших потреб. А попередньо можете погратися з моїм чудо-граббером. Це універсальний граббер картинок і посилань з веб-інтерфейсом.