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. Вот и все, желаю быстрой и качественной индексации сайта.

Понравилась статья?

 Подпишитесь на RSS или почтовую рассылку;

 Присоединяйтесь в Twitter, Facebook, Google+, VK;

 Поделитесь ссылкой в социальной сети или блоге:

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

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

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

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

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

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

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

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

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

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

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

    • Последняя версия 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 из портов). Включайте повышенную детальность логов и ищите ошибки, других вариантов, к сожалению, нет.

  4. Регулярное выражение для графических файлов и CSS должно быть case-insensitive, иначе файлы типа .JPG вкючаются в sitemap.

    awk 'tolower($0) ~ !/(/|.css|.gif|.jpeg|.jpg|.js)$/'

      • На сайте, для которого это делалось, все расширения в нижнем регистре. Тем не менее, спасибо, Ваш вариант более универсален.

  5. Не подскажете в чем может быть дело?
    Все работает отлично кроме одного.
    python /usr/local/lib/python2.7/site-packages/sitemap_gen.py ––config=/usr/local/lib/python2.7/site-packages/sitemapgen.xml
    Выдает одно и тоже:

    "A simple script to automatically produce sitemaps for a webserver,
    in the Google Sitemap Protocol (GSP).

    Usage: python sitemap_gen.py --config=config.xml [--help] [--testing]
    --config=config.xml, specifies config file location
    --help, displays usage message
    --testing, specified when user is experimenting"

    Как будто конфига невидит, хотя он есть! 🙂
    Запуская вот так: python /usr/local/lib/python2.7/site-packages/sitemap_gen.py
    Результат такой же, так и не понял по чему не видит 🙁

  6. Ошибка оказалась в копи-пасте 🙂
    ––config=sitemapgen.xml
    (--)оказались другими 🙂

Оставить комментарий