Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Создать Sitemap.XML в Python

Создать Sitemap.XML в Python

Большинство CMS в наши дни имеют собственные инструменты для создания карты сайта. Но, что делать если нам нужен инструмент который создавал sitemap.xml для определенного сайта не имея доступа к базе данных. Для этого нужно воспользоваться небольшим парсером который посетит все публичные ссылки на нужном сайте и составит его карту.

Карта сайта весьма нужный файл на вашем сайте. Такие поисковые системы как Google и Яндекс отдают предпочтение сайтам с уже готовым sitemap. Поисковики понимают какие страницы для вас важнее и какие обновляются чаще и нуждаются в особом внимании. Кодировка файла sitemap.xml должна быть utf-8.

Структура файла Sitemap.xml

<?xml version="1.0" encoding="UTF-8"?>
 
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 
   <url>
      <loc>http://python-3.ru/</loc>
      <lastmod>2015-07-25</lastmod>
      <changefreq>daily</changefreq>
      <priority>1.0</priority>
   </url>
 
   <url>
      <loc>http://python-3.ru/category/pyqt/</loc>
      <lastmod>2015-07-25</lastmod>
      <changefreq>monthly</changefreq>
      <priority>0.8</priority>
   </url>
 
</urlset>

Описание тегов

<urlset> (обязательный) - Инкапсулирует этот файл и указывает стандарт текущего протокола.

<url> (обязательный) - главный тег каждой ссылки. Теги внутри него являются дочериными и описывают каждую ссылку индивидуально.

<loc> (обязательный) - URL-адрес страницы. Этот URL-адрес должен начинаться с префикса (например, HTTP) и заканчиваться косой чертой, если Ваш веб-сервер требует этого. Длина этого значения не должна превышать 2048 символов.

<lastmod> (необязательно) - Дата последнего изменения файла. Эта дата должна быть в формате W3C Datetime. Этот формат позволяет при необходимости опустить сегмент времени и использовать формат ГГГГ-ММ-ДД.

<changefreq> (необязательно) - Вероятная частота изменения этой страницы. Это значение предоставляет общую информацию для поисковых систем и может не соответствовать точно частоте сканирования этой страницы. Допустимые значения: always (всегда), hourly (каждый час), daily (каждый день), weekly (каждую неделю), monthly (каждый месяц), yearly (каждый год), never (никогда).

<priority> (необязательно) - Приоритетность URL относительно других URL на Вашем сайте. Допустимый диапазон значений — от 0,0 до 1,0. Это значение не влияет на процедуру сравнения Ваших страниц со страницами на других сайтах — оно только позволяет указать поисковым системам, какие страницы, по Вашему мнению, более важны для сканеров. Приоритет страницы по умолчанию — 0,5.

Скрипт создания Sitemap.xml в Python

Для этого мы будем использовать модуль ApeSmit который является весьма элегантной и легкой решением для создание sitemap.xml. Хочу напомнить, что ApeSmit не является парсером, т.е. он заходит на сайт и не создает древо автоматически. Он создает sitemap.xml из тех ссылок что вы ему предложите.

Установка

easy_install apesmit

Код на Python

# -*- coding: utf-8 -*-
from apesmit import Sitemap
 
# Ставим значение частоты изменении для всех ссылок
sm = Sitemap(changefreq='weekly')
# Добавляем обычную сссылку, указываем индивидульно приоритет
sm.add('http://python-3.ru/', priority=1.0)
# Добавляем ссылку с измененым параметром последнего изменения
sm.add('http://python-3.ru/page/send-sms-python', lastmod='today')
 
sm.add('http://python-3.ru/category/sqlite', changefreq='daily', priority=1.0, lastmod='2015-07-23')
 
# Создаем файл sitemap в текущею папку скрипта
out=open('sitemap.xml', 'w')
# записываем данные
sm.write(out)
# закрываем файл
out.close()

Результат работы скрипта

<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
        http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"
        xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
 <url>
  <loc>http://python-3.ru/</loc>
  <changefreq>weekly</changefreq>
  <priority>1.0</priority>
 </url>
 <url>
  <loc>http://python-3.ru/page/send-sms-python</loc>
  <lastmod>2015-07-25</lastmod>
  <changefreq>weekly</changefreq>
 </url>
 <url>
  <loc>http://python-3.ru/category/sqlite</loc>
  <lastmod>2015-07-23</lastmod>
  <changefreq>daily</changefreq>
  <priority>1.0</priority>
 </url>
</urlset>