Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Парсинг сайтів за допомогою програми DataCol

  1. Приклад парсинга сайту
  2. Основні налаштування
  3. Обхід сторінок сайту
  4. Збір даних
  5. додатково
  6. планувальник
  7. Завантаження файлів по ftp
  8. експорт
  9. Форум
  10. недоліки
  11. Дуже заплутаний інтерфейс
  12. Отримання даних методом POST
  13. Що можна поліпшити
  14. переваги
  15. висновок

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

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

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

Завантажити демо версію Datacol можна з сайту розробника . Єдина відмінність демо версії від повнофункціональної полягає в неможливості експорту даних. Так що перед покупкою варто обов'язково спробувати парсер в роботі на потрібних вам сайтах.

Отже, програма завантажена і встановлена, запустимо її.

Отже, програма завантажена і встановлена, запустимо її

Вид головного вікна після першого запуску викликав у мене шок нерозуміння.

Очевидно, що у верхній частині вікна знаходиться панель інструментів. Але що станеться, якщо натиснути першу кнопку "Запуск"?

Трохи нижче розташований деревовидний список якихось кампаній, а праворуч від нього порожній грід.

У нижній частині знаходиться список новин від Datacol. Подвійний клік на новини відкриє відповідну сторінку в браузері. Тільки навіщо потрібен повний урл новини справа?

На щастя для мене на головній сторінку сайту програми є відео з якого можна отримати основні відомості по роботі з програмою. Рекомендую з ним відразу ознайомитися:

Загалом, стає зрозуміло, що кампанії - це налаштування парсинга певного сайту. Розробники включили в комплект програми пару десятків готових кампаній для парсинга популярних сайтів.

Приклад парсинга сайту

Створення кампанії парсинга

Я створю нову кампанію для парсинга готелів з сайту booking.com. Для цього треба натиснути кнопку "Додати кампанію", ввести назву кампанії (раджу називати по імені сайту) в діалозі і вибрати тип кампанії "парсер".

Після натискання кнопки створити, відкриється вікно налаштування кампанії:

Основні налаштування

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

На вкладці "Завантаження" можна вибрати кешування сторінок:

На вкладці Завантаження можна вибрати кешування сторінок:

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

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

На деяких сайтах потрібна інформація може бути доступна тільки зареєстрованим користувачам. Для цього є розділ "Авторизація".

Для цього є розділ Авторизація

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

Обхід сторінок сайту

Перейдемо тепер до безпосередньо парсингу, який складається з двох кроків: отримання сторінок з потрібними нам даними і безпосередньо парсинг цікавлять нас даних зі сторінок сайту.

Перший крок налаштовується за допомогою закладки "Навігація".

Перший крок налаштовується за допомогою закладки Навігація

Для початку роботи необхідно вказати як мінімум один урл, з якого почнеться завантаження сторінок сайту. Для даного прикладу я відкрив в браузері сайт booking.com і вибрав список готелів Києва.

com і вибрав список готелів Києва

Одержаний урл скопіював в поле "Список початкових URL".

Очевидно, що цей список містить посилання на сторінки, з яких нам треба зібрати інформацію про готелі (назва, опис, фотографії тощо). Крім того, в нижній частині знаходиться навігатор по сторінках списку, так як всі готелі не влізли на одну сторінку.

Щоб завантажити всі частини списку готелів, а також сторінки з готелями, використовуємо розділ "Збір посилань" закладки "Навігація".

Щоб завантажити всі частини списку готелів, а також сторінки з готелями, використовуємо розділ Збір посилань закладки Навігація

Тут треба вказати, які посилання (url) використовувати для завантаження повного списку готелів та сторінок самих готелів. Зробити це можна двома способами: за допомогою XPath і за допомогою регулярних виразів . Обидва ці інструменту непрості для розуміння і вимагають ретельного вивчення для осмисленого застосування.

На щастя, розробники Datacol зробили спеціальний помічник, який вміє складати XPath запити і регулярні вирази замість вас.

Щоб ним скористатися, натискаємо однойменну кнопку. В відкрилося вікно вставляємо урл першої сторінки зі списком готелів і натискаємо кнопку "Перехід". У правій частині вікна відкриється потрібна нам сторінка, а в лівій буде показаний її html код.

Щоб передати помічнику інформацію про посилання на сторінки з описом готелю досить натиснути правою кнопкою миші по посиланню на готель. Після цього з'явиться діалогове вікно з підібраним XPath виразом. У правій частині цього вікна відображається відповідна частина html коду сторінки.

Зверніть увагу на список, що випадає праворуч, що містить цифри від 1 до 20. Через нього можна вибрати інші частини html коду сторінки, відповідні XPath виразу. В даному випадку таких частин 20, як і готелів на сторінці. Тобто Datacol зможе отримати всі 20 посилань на описи готелів.

Тепер прокручуємо сторінку вниз до посторінкового навігації. Треба вказати посилання, за якими парсер зможе пройти по інших сторінок списку готелів. Для цього можна натиснути правою кнопкою миші по посиланню "Наступна сторінка". В результаті помічник підбере для цього посилання XPath вираз:

/ / A [@ class = "paging-next ga_sr_gotopage_2_21"]

Людською мовою це означає: знайти html тег <a> з атрибутом class рівним "paging-next ga_sr_gotopage_2_21". На жаль, на другій сторінці посилання для переходу до наступної сторінки виводиться вже не з класом ga_sr_gotopage_2_21, а з класом ga_sr_gotopage_3_21 і наше XPath вираз не зможе його вибрати.

Доведеться скористатися головою і написати свій варіант:

/ / A [contains (@class, "paging-next")]

Цей вислів буде отримувати посилання "Наступна сторінка" правильно.

Збір даних

Перейдемо тепер безпосередньо до парсингу інформації про готелі. Для цього відкриваємо вкладку "Збір даних".

Інтерфейс стає ще складніше. До двох рядах табів додався ще один. По суті, перед вами тривимірний інтерфейс.

Гаразд, якщо один раз розібратися, то в подальшому особливих складнощів з управлінням не виникає. Зліва відразу вибираємо "Поля даних". Для простоти будемо аналізувати довільні тільки 4 поля: Назва та опис готелю і фотографії (повнорозмірні і превью).

Натискаємо кнопку "Додати" і вводимо назву поля, яке буде містити назву готелю (я назвав його HotelName). Після цього відкриваємо помічник, вказуємо урл з описом готелю (будь-якого) і натискаємо на назві правою кнопкою миші.

Тепер аналогічно додаємо поле для опису готелю. За допомогою помічника отримаємо таке XPath вираз:

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

Тепер треба переключитися на вкладку "Статичні" та прибрати кому з поля "Рядок об'єднання".

Цими настройками ми вказуємо програмі зібрати всі відповідні шматки html коду. В даному випадку це все абзаци опису готелю.

Тепер створимо поля повноформатних і превью фотографій готелю (ImageLarge і ImageSmall). За допомогою помічника отримаємо таке XPath вираз:

// a [@ class = "change_large_image_on_hover hotel_thumbs_sprite"]

За допомогою цього XPath вирізується шматок html, показаний в правій частині вікна помічника. Жовтим я виділив ті частини, які містять потрібні посилання на фотографії (визначив досвідченим шляхом). Ми їх отримаємо трохи пізніше, а зараз копіюємо XPath в поле "XPATH вирізання" для обох полів, виставляємо тип поля в "Статична" і вибираємо "Зберігати теги".

На вкладці "Статичні" можна залишити кому або використовувати інший символ-роздільник.

Datacol вміє не тільки отримувати посилання на зображення, але і завантажувати їх на комп'ютер (і навіть заливати на ваш ftp сервер). Для цього служить закладка "Завантаження файлів". Крім того, цей же функціонал допоможе нам виділити "чисті" урли фотографій.

Крім того, цей же функціонал допоможе нам виділити чисті урли фотографій

Отже, відзначаємо "Завантажувати файли".

Папку для збереження можна вибрати будь-яку на вашому комп'ютері.

Віртуальний шлях - це той шлях, де будуть лежати файли на вашому сайті. Разом з налаштуванням "Повертати віртуальні шляху" цей параметр впливає на кінцевий урл зображення. Я встановив значення "/", тобто папка з зображеннями буде знаходитися в корені сайту.

Налаштування "Залишати існуючі" означає, що якщо файл вже завантажений, то завантаження повторюватися не буде (зручно при тестуванні кампанії).

Генерація підпапок відбуватиметься за заданою формулою, де% HotelName% - поле "Назва готелю". Тобто фотографії готелів будуть розкладені по відповідним папкам.

Нарешті, останнім поле, "Правила ідентифікації посилання", запишемо наступне регулярний вираз:

Воно буде застосовано до шматка html коду, вирізати XPath виразом вище і означає, що треба повернути текст в лапках після "data-resized =", тобто шлях до повнорозмірної фотографії.

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

Усе! Парсинг готелів налаштований! Можна зберігати кампанію і запускати процес.

Звичайно, для збору повноцінної бази готелів треба буде додати ще й інші поля, але основний принцип, сподіваюся, зрозумілий.

Вийшло досить складно. Ще складніше було розібратися з цими настройками. Скористатися логікою не вийде і єдиний спосіб розібратися з програмою - уважно прочитати всю довідку (я саме так і зробив).

додатково

Розширення функціональності за допомогою плагінів

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

планувальник

За допомогою вбудованого планувальника можна гнучко налаштувати автоматичний запуск створених кампаній в заданий час.

Завантаження файлів по ftp

Я показав, як налаштувати скачування фотографій з сайту-донора. Додатково можна автоматично завантажувати викачані файли на ваш сайт через ftp.

експорт

Результати парсинга можна експортувати в кілька форматів: текст, Excel, MySql, WordPress. За допомогою плагінів можна додавати інші формати експорту.

Форум

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

З одного боку я розумію розробників: якщо всім допомагати з настройками, то не буде часу на додавання нових фіч. Але з іншого боку ставлення до людей, які купили програму, занадто байдуже.

До речі, щодо регулярних виразів: в даному прикладі я всюди використовував XPath (крім отримання посилань на зображення). Замість XPath можна використовувати регулярні вирази. Але проблема в тому, що вони розроблені для регулярних текстів, а html таким не є. Це означає, що в загальному випадку ви не зможете отримати довільний шматок html.

недоліки

Трохи підсумую недоліки програми.

Дуже заплутаний інтерфейс

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

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

І навіть після того, як я розібрався що до чого, мені все одно користуватися незручно: доводиться часто перемикатися між численними табами.

Отримання даних методом POST

Datacol вміє отримувати сторінки тільки методом GET. На деяких сайтах при відправці форми використовується метод POST і в цьому випадку ви не зможете скористатися цією програмою.

Що можна поліпшити

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

  1. Дерево кампаній на головному екрані програми - в топку. Хто працює відразу з декількома кампаніями? Зробіть відкриття і збереження кампанії, як документа Word або проекту Visual Studio. Всі настройки парсинга повинні відбуватися в головному вікні.
  2. Таби - в топку. Я хочу бачити що за чим іде, а не перемикатися між закладками. В ідеалі хотілося б бачити щось типу Yahoo Pipes .
  3. Встановіть на своєму сайті Wiki і вносите в неї всю інформацію з налагодження. На запитання користувачів давайте посилання на Wiki або відповідайте. Не посилайте їх на три букви!

переваги

Незважаючи на мою критику, Datacol має чимало переваг:

  • Широкі можливості налаштування
  • Помічник складання рядків виразно (кілер фіча додатки)
  • Розширення функціональності за допомогою плагінів
  • Можливість автоматизації постинга даних на свій сайт
  • Можливість отримати рішення своїх завдань за додаткову плату

висновок

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

Але що станеться, якщо натиснути першу кнопку "Запуск"?
Тільки навіщо потрібен повний урл новини справа?
Пам'ятаєте тип кампанії "Проксі чекер" в діалозі створення нової кампанії?
Хто працює відразу з декількома кампаніями?

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.