Synapse nativexml

Якщо попередній пост призначався виключно для користувачів програми "Пінговалка", то цей - для розробників. Сьогодні будемо розбиратися з sitemap.xml.

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

Як і сказано в заголовку поста - використовувати будемо дві безкоштовні, Кросплатформені бібліотеки - Synapse і NativeXML.

Перш, ніж перейдемо до реалізації читання sitemap в Delphi. трохи розберемося з тим, що нас чекає.

Трохи слів про Sitemap

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

Наприклад, запис певної URL з мета-даними може виглядати так:

Якщо сайт більш менш старенький, то його Sitemap може налічувати тисячі URL. Наприклад, sitemap мого блогу налічує зараз 865 сторінок, включно зі сторінками за тегами. А якщо взяти якийсь виразника де поновлення можуть проходити по 100 штук на день? Або розкручений, популярний форум? Там sitemap може налічувати досить велика кількість сторінок. Тому розробники протоколу Sitemap зробили обмеження - 50000 URL на один файл. Також файл повинен бути розміром до 10 Мб.

Якщо передається інформація по 50000 + сторінок, то в пошукову систему відправляється індексний файл Sitemap. У цьому фалі перераховані шляху до XML-файлів в яких міститися вже URL "и сторінок. Запис в індексному файлі може виглядати так:

Всі дані в Sitemap передаються в кодуванні UTF-8. Ось, мабуть, вся та інформація, яка нам знадобиться для розробки. Тепер перейдемо до реалізації нашої програми.

Парс Sitemap в Delphi

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

  1. Викачуємо файл по заданому URL
  2. Читаємо файл і визначаємо чи є він індексним
  3. Якщо ми завантажили індексний sitemap, то отримуємо з нього посилання на інші файли і викачуємо ці файли
  4. Парс все викачані файли на предмет інформації по URL.

Почнемо з опису необхідних типів даних. Кожен елемент в sitemap буде представлений у вигляді запису (record):