FreeBSD: Обновленный скрипт стыковки google-sitemapgen и webcheck

Данная заметка является дополнением к опубликованной ранее статье Автоматическое создание файла sitemap, которая частично устарела в связи с последним обновлением webcheck и изменением имен генерируемых им файлов. Также в процессе использования описанного ранее способа генерации файла sitemap были выявлены и устранены некоторые недочеты (попадание дублирующихся и ненужных URL в файл sitemap), которые я не заметил в свое время.

Теперь периодически запускаемый скрипт, предназначенный для генерации файла sitemap, имеет следующей вид (измененные строки подсвечены):

#!/bin/sh
lastmod=`date +"%Y-%m-%d"`
folder=/tmp/webcheck
if [ ! -d $folder ]
then
mkdir $folder
fi
cd $folder
/usr/local/bin/webcheck -afq http://www.company.com/
cat urllist.html \
| awk '{if (index($3,"internal")>0 && index($2,"?")==0) {print substr($2,7,length($2)-7)}}' \
| awk '!/(\/|\.css|\.gif|\.jpeg|\.jpg|\.js)$/' | sort \
| awk '{if (index($1,"catalog")>0) {print $1 " changefreq=daily priority=1.0 lastmod='$lastmod'"} \
        else {print $1 " changefreq=weekly priority=0.5 lastmod='$lastmod'"}}' > url_list.txt
/usr/local/bin/python /usr/local/lib/python2.5/site-packages/sitemap_gen.py \
  ––config=/etc/sitemapgen.xml
rm -Rf $folder

В 9й строке добавлен ключ -f, обеспечивающий перезапись генерируемых файлов без запроса подтверждения; в 10й строке имя файла, из которого выбираются URL, изменено на urllist.html (файл sitemap.html больше не генерируется); в 12й строке удален вызов uniq(1) (теперь он не нужен) и добавлен вызов awk(1), который удаляет дубликаты URL, отличающиеся от оригиналов наличием слеша в конце, и ненужные в файле sitemap URL таких объектов, как каскадные таблицы стилей, изображения в форматах GIF и JPEG и скрипты на языке JavaScript. Следует отметить, что альтернативой дополнительного вызова awk могут служить параметры EXCLUDED_URLS и/или YANKED_URLS, которые можно задать как в файле конфигурации, так и в команде запуска webcheck. Вот и все, желаю быстрой и качественной индексации сайта.

IT Talk - Форум о программировании, операционных системах, безопасности, сайтостроении, железе, девайсах, сетях и т.п.

Похожие статьи в рубриках ‘FreeBSD’ и ‘Веб-серверы, CMS, сайты’

Комментарии

  1. wrt, 14.10.2009 г. в 17:50

    В 12-ой строчке ошибка, лишний символ “|”. Не знаю как у вас, но в версии webcheck 1.10.3, имя выходного файла по умолчанию index.html а не urllist.html (10 строка). Благодарен за статью.

    • SergeySL, 15.10.2009 г. в 10:20

      В 12-ой строчке ошибка, лишний символ “|”

      Прошу прощение за невнимательность, исправил.

      Не знаю как у вас, но в версии webcheck 1.10.3, имя выходного файла по умолчанию index.html а не urllist.html (10 строка)

      Версия webcheck такая же, как у Вас. Есть и index.html и urllist.html. index.html содержит карту сайта в виде многоуровневого списка, urllist.html – в виде одноуровневого. Естественно, можно вытащить список URL’ов из index.html, здесь, как говорится, на вкус и цвет товарищей нет :smile:

  2. Aleksey, 16.03.2010 г. в 10:18

    У меня стоит python2.6 поставил данный модуль настройки не изменял, но поиск по сайту не идет вообще только главную страницу проверяет и все пишеть следующее сообщение в index.html:

    This an overview of the crawled site.
    * [14]http://XXXX/

    В чем может быть дело?

    • SergeySL, 16.03.2010 г. в 10:38

      Для начала поправить в 15 строке python25 на python26, а затем внимательно посмотреть на ключи запуска webcheck, думаю, что других проблем быть не должно.

  3. Aleksey, 17.03.2010 г. в 8:43

    Да я в ручную запускал webcheck, но получил на выходе практически пустой файл urllist и index.html. Пробывал на разных сайтах но результат один и тот же. Правда сайт у меня на php написан.

    • SergeySL, 17.03.2010 г. в 10:45

      Последняя версия webcheck по умолчанию создает вот такие файлы (ls -l с рабочего сервера):

      -rw-r--r-- 1 root wheel 6174 17 мар 04:04 about.html
      -rw-r--r-- 1 root wheel 4456 17 мар 04:04 badlinks.html
      -rw-r--r-- 1 root wheel 7827156 17 мар 04:04 external.html
      -rw-r--r-- 1 root wheel 14403 17 мар 04:04 fancytooltips.js
      -rw-r--r-- 1 root wheel 318 17 мар 04:04 favicon.ico
      -rw-r--r-- 1 root wheel 73699 17 мар 04:04 images.html
      -rw-r--r-- 1 root wheel 634260 17 мар 04:04 index.html
      -rw-r--r-- 1 root wheel 2602 17 мар 04:04 new.html
      -rw-r--r-- 1 root wheel 8564277 17 мар 04:04 notchkd.html
      -rw-r--r-- 1 root wheel 3848 17 мар 04:04 notitles.html
      -rw-r--r-- 1 root wheel 2594 17 мар 04:04 old.html
      -rw-r--r-- 1 root wheel 747213 17 мар 04:04 problems.html
      -rw-r--r-- 1 root wheel 651457 17 мар 04:04 size.html
      -rw-r--r-- 1 root wheel 735405 17 мар 04:04 urllist.html
      -r--r--r-- 1 root wheel 3953 17 мар 04:04 webcheck.css
      -rw-r--r-- 1 root wheel 3711520 17 мар 04:04 webcheck.dat
      -rw-r--r-- 1 root wheel 3710094 17 мар 04:04 webcheck.dat~

      Среди них нет файла urllist (есть urllist.html). Сайт также написан на PHP, что совершенно не важно, т.к. webcheck ни коим образом не взаимодействует с движком сайта, а запрашивает данные по протоколу HTTP, как обычный Web-браузер. Возможно, у Вас криво установлен python, возможно, отсутствуют какие-то модули (список нужных модулей есть в документации webcheck), возможно сам webcheck установлен или настроен некорректно. У меня под FreeBSD все заработало из коробки (ставил webcheck из портов). Включайте повышенную детальность логов и ищите ошибки, других вариантов, к сожалению, нет.

Ваш комментарий

(обязательно)