Всякий раз, когда два программиста встречаются для критического анализа своих программ, они оба молчат. (Алан.Дж.Перлис)

Bash Script – Создание списка URL – адресов из карты сайта в WordPress

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
8 апреля 2017
Bash Script - Создание карты сайта в WordPress
Иногда вам может понадобится список URL – адресов всех постов, страниц и категории вашего WordPress или WooCommerce сайта.

Bash Script – Создание списка URL – адресов из карты сайта в WordPress

Обновить все пакеты и установить пакет xml2 на Debian и Ubuntu

sudo apt update
sudo apt install wget xml2 -y

 

После установки основных инструментов, вы можете перейти к скрипту.

Основной скрайбер карты сайта

Этот скрипт обрабатывает ваш post-sitemap.xml и page-sitemap.xml

#!/usr/bin/env bash
# Purpose: WordPress URL sitemap scraper
# Author: AndreyEx
# Source: AndreyEx https://andreyex.ru

# Сайт для извлечения файлов
SITE=https://andreyex.ru

# Извлечение post-sitemap.xml
wget -q $SITE/post-sitemap.xml -O postsitemap.xml

#Разобрать xml файл и сохранить его в posts.txt
xml2 < postsitemap.xml | grep /url/loc= | sed 's/.*=//' > posts.txt

#Скачать страницу карты сайта
wget -q $SITE/page-sitemap.xml -O pagesitemap.xml

#разобрать xml сайт и сохранить его в pages.txt
xml2 < pagesitemap.xml | grep /url/loc= | sed 's/.*=//' > pages.txt

 

У вас появятся 2 файла: posts.txt и pages.txt.

Множественный Sitemaps

Если у вас есть несколько файлов карт сайта в формате post-sitemap1.xml, этот скрипт поможет извлечь все URL-адреса из каждого суб-файла.

Вы должны предоставить номера от 1..6

#!/usr/bin/env bash
# WordPress URL sitemap scraper for multiple post-sitemaps
# Author AndreyEx from AndreyEx https://andreyex.ru

# Сайт для извлечения файлов
SITE=https://andreyex.ru

# для нескольких файлов, в данном случае 6
for i in {1..6}
do
    wget -q $SITE/post-sitemap$i.xml -O postsitemap.xml
    #Парсинг xml файла из posts-$i.txt
    xml2 < postsitemap.xml | grep /url/loc= | sed 's/.*=//' > posts-$i.txt
done

 

Если вы хотите совместить (объединить) несколько файлов: posts-1.txt, posts-2.txt, posts-n.txt в allposts.txt, это можно сделать так

cat posts-*.txt > allposts.txt

 

Вы также можете использовать sed вместо того, чтобы объединить файлы в один

sed -n w"allposts.txt" posts-{1..6}.txt

 

Конвертировать все файлы Sitemap

Это соединит все карты сайта в текстовый файл, независимо от того, сколько у вас sitemaps есть.

#!/usr/bin/env bash
# Purpose: WordPress URL sitemap scraper
# Author: AndreyEx 
# Source: AndreyEx https:/andreyex.ru

# Сайт
SITEMAPBASE=https://andreyex.ru

# Имя главной карты сайта
SITEMAPXML=sitemap_index.xml

# Грабинг sitemap.xml
wget -q $SITEMAPBASE/$SITEMAPXML -O /tmp/sitemap.xml

# включение карты сайта в множество sub-sitemaps
SITEMAPARRAY=($(xml2 < /tmp/sitemap.xml | grep /sitemapindex/sitemap/loc= | sed 's#.*=##'))

# цикл по масиву, захватить sub-sitemap и превратить его в текстовый файл
for SITEMAPELEMENT in ${SITEMAPARRAY[@]}; do
    echo $SITEMAPELEMENT
    wget -q $SITEMAPELEMENT -O /tmp/tempsitemap.xml
    SITEMAPTXTNAME=$(echo $SITEMAPELEMENT | sed "s#$SITEMAPBASE/##" | sed "s#.xml##")
    echo $SITEMAPTXTNAME
    xml2 < /tmp/tempsitemap.xml | grep /url/loc= | sed 's/.*=//' > $SITEMAPTXTNAME.txt
done

 

Если вы хотите совместить (объединить) несколько файлов: posts-sitemap1.txt, posts-sitemap2.txt, postssitemap-n.txt в allposts.txt, это можно сделать так

cat post-sitemap*.txt > allposts.txt

 

Теперь у вас есть список постов, страниц, категорий из карты сайта.

Просмотров: 157

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close