Карта сайта Google App Engine, динамически созданная с помощью Python

У меня есть веб-сайт, и я хочу создать для него динамическую карту сайта. Я использую Google App Engine с Python и Django.

Я разработал другой веб-сайт с использованием PHP, и файл sitemap.xml был доступен из-за этого правила перезаписи, которое я написал в .htaccess сервера Apache.

RewriteRule (.*)\.xml(.*) $1.php$2 [nocase]

Файл .xml был создан следующим образом:

$sql_select ="SELECT titulo, title, data_insercao FROM livros l ORDER BY titulo ASC";
$result = mysql_query($sql_select) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$titulo = $row['titulo'];
$title = $row['title'];
$data = $row['data_insercao'];
$sql_comentario ="SELECT data FROM comentarios WHERE livros_title = '" . $title . "' order by data desc LIMIT 0 , 1";
$result_comentario = mysql_query($sql_comentario) or die(mysql_error());
$row_comentario = mysql_fetch_array($result_comentario);
if($row_comentario){
$data = $row_comentario['data'];
}
$pieces = explode(" ", $data);
$data = $pieces[0];
$url_product = 'http://www.sinopsedolivro.net/livro/' . $title . '.html';
echo
' <url>
<loc>'.$url_product.'</loc>
<lastmod>'.$data.'</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
';
}
Есть ли вариант для моего случая (GAE + Python), чтобы при доступе к www.mydomain.com/sitemap.xml он получал от сервера файл .xml с динамическим содержимым, генерируемым самостоятельно с помощью python?


person rlc    schedule 29.03.2011    source источник


Ответы (3)


Конечно, вы можете предоставить любой ответ, который вы хотите, на любой URL-адрес вашего приложения. Просто сопоставьте свой контроллер с /sitemap.xml и напишите там код, который выводит ваш xml. Не забудьте установить MIME-тип ответа на правильное значение.

Если вы используете django, вы можете прочитать http://docs.djangoproject.com/en/dev/topics/http/urls/

person Radomir Dopieralski    schedule 29.03.2011

Это отличная статья Ника Джонсона о картах сайта Файлы Sitemap

В статье описывается использование метода создания карты сайта после развертывания, альтернативой является создание карты сайта время от времени; скажем, один раз в день, используя cron, например.

`- description: daily sitemap refresh
  url: /cron_generate_sitemap
  schedule: every day 02:00
  timezone: Pacific/Auckland`

Если вы храните карту сайта в хранилище данных, доступ будет очень быстрым, что повлияет на ваш SEO-рейтинг.

Я предлагаю вам сохранить карту сайта в такой модели, как предоставленная Ником Джонсоном, например.

`class StaticContent(db.Model):
    """Container for statically served content.  
    The serving path for content is provided in the key name.
    """
    body = db.BlobProperty()
    content_type = db.StringProperty(required=True)
    last_modified = db.DateTimeProperty(required=True, auto_now=True)
    indexed = db.BooleanProperty(required=True, default=True)
`
person jonmiddleton    schedule 30.03.2011
comment
Вау, какая гениальная идея! Хотел бы я подумать об этом. ;) - person Nick Johnson; 31.03.2011

Я столкнулся с той же проблемой и создал библиотеку на python для динамического создания карт сайта и с тех пор использую ее.


pip install sitemap

Использование:

from sitemap import Url, Urlset

urlset = Urlset()
url = Url('https://www.example.com/', changefreq='weekly')

urlset.add_url(url)

# urlset.to_string()
urlset.write_xml('sitemap.xml')

Подробнее здесь, ссылка на проект на github: https://github.com/cxmcc/sitemap-python< /а>

person Xiuming Chen    schedule 22.11.2019