Составляем карту сайта с помощью A-Parser

Пресет Составляем карту сайта с помощью A-Parser 1.0

Доступно владельцам лицензии
  • Автор темы Автор темы Support
  • Дата начала Дата начала

Support

Administrator
Команда форума
A-Parser Enterprise
Карта сайта (Wiki) - это XML-файл с информацией для поисковых систем (таких как Яндекс, Google, Bing, Поиск@Mail.Ru) о страницах веб-сайта, которые подлежат индексации. Он помогает поисковикам более разумно индексировать сайт. Некоторые SEO-специалисты считают отсутствие такой карты грубейшей ошибкой. В интернете существует очень много сервисов и инструментов для создания таких карт, а также для их валидации. Мы же попробуем создать карту сайта с помощью A-parser.

Итак, посмотрим, что конкретно нам нужно делать.
  1. Проверяем все внутренние ссылки на обрабатываемом сайте.
  2. Узнать все необходимые параметры для каждой ссылки.
  3. Сохраняем всю эту информации в файле sitemap.xml.
Протокол sitemap описан на сайте sitemaps.org. Для решения этой задачи нам прекрасно подойдет парсер HTML::LinkExtractor HTML::LinkExtractor. Он умеет собирать ссылки из сайта на указанную глубину и возвращать заголовки ответа сервера (где обычно содержится дата последнего изменения). За вывод результата будет отвечать шаблонизатор Template Toolkit, который будет формировать правильный вид итогового файла.

Ну что же, вот само задание.
iXk8u.png

aFUIl.png

Код:
eyJwcmVzZXQiOiJzaXRlbWFwIiwidmFsdWUiOnsicHJlc2V0Ijoic2l0ZW1hcCIs
InBhcnNlcnMiOltbIkhUTUw6OkxpbmtFeHRyYWN0b3IiLCJkZWZhdWx0Iix7InR5
cGUiOiJvcHRpb25zIiwiaWQiOiJwYXJzZUxldmVsIiwidmFsdWUiOjN9LHsidHlw
ZSI6Im92ZXJyaWRlIiwiaWQiOiJmb3JtYXRyZXN1bHQiLCJ2YWx1ZSI6Ijx1cmw+
XFxuPGxvYz5bJSBxdWVyeSB8IHhtbCAlXTwvbG9jPlslIElGIGxtWWVhciAhPSAn
bm9uZScgJV1cXG48bGFzdG1vZD4kbG1ZZWFyLVslIFNXSVRDSCBsbU1TdHJpbmcg
JV1bJSBDQVNFICdKYW4nICVdMDFbJSBtPScwMScgJV1bJSBDQVNFICdGZWInICVd
MDJbJSBtPScwMicgJV1bJSBDQVNFICdNYXInICVdMDNbJSBtPScwMycgJV1bJSBD
QVNFICdBcHInICVdMDRbJSBtPScwNCcgJV1bJSBDQVNFICdNYXknICVdMDVbJSBt
PScwNScgJV1bJSBDQVNFICdKdW4nICVdMDZbJSBtPScwNicgJV1bJSBDQVNFICdK
dWwnICVdMDdbJSBtPScwNycgJV1bJSBDQVNFICdBdWcnICVdMDhbJSBtPScwOCcg
JV1bJSBDQVNFICdTZXAnICVdMDlbJSBtPScwOScgJV1bJSBDQVNFICdPY3QnICVd
MTBbJSBtPScxMCcgJV1bJSBDQVNFICdOb3YnICVdMTFbJSBtPScxMScgJV1bJSBD
QVNFICdEZWMnICVdMTJbJSBtPScxMicgJV1bJSBFTkQgJV0tJGxtRGF5PC9sYXN0
bW9kPlxcbjxjaGFuZ2VmcmVxPlslIFVTRSBkYXRlO2NhbGMgPSBkYXRlLmNhbGM7
RGQgPSBjYWxjLkRlbHRhX0RheXMobG1ZZWFyLG0sbG1EYXksIGRhdGUuZm9ybWF0
KGRhdGUubm93LCAnJVknKSxkYXRlLmZvcm1hdChkYXRlLm5vdywgJyVtJyksZGF0
ZS5mb3JtYXQoZGF0ZS5ub3csICclZCcpKSAlXVslIElGIERkID09IDAgJV1ob3Vy
bHlbJSBFTkQgJV1bJSBJRiBEZCA9PSAxICVdZGFpbHlbJSBFTkQgJV1bJSBJRiBE
ZCA+IDEgYW5kIERkIDwgMzAgJV13ZWVrbHlbJSBFTkQgJV1bJSBJRiBEZCA+PSAz
MCBhbmQgRGQgPCAzNjUgJV1tb250aGx5WyUgRU5EICVdWyUgSUYgRGQgPj0gMzY1
ICVdeWVhcmx5WyUgRU5EICVdPC9jaGFuZ2VmcmVxPlslIEVORCAlXVxuPHByaW9y
aXR5PlslIElGIHF1ZXJ5Lmx2bCA9PSAwICVdMVslIEVMU0UgJV1bJSBVU0UgTWF0
aDsgTWF0aC5pbnQoMTAgLyAocXVlcnkubHZsICsgMSkpIC8gMTAgKyAwLjMgJV1b
JSBFTkQgJV08L3ByaW9yaXR5PlxuPC91cmw+XFxuIn0seyJ0eXBlIjoidW5pcXVl
IiwicmVzdWx0IjpbImludGxpbmtzIiwibGluayJdLCJ1bmlxdWVUeXBlIjoic3Ry
aW5nIiwidW5pcXVlR2xvYmFsIjpmYWxzZX0seyJ0eXBlIjoiZmlsdGVyIiwicmVz
dWx0IjoiaGVhZGVycyIsImZpbHRlclR5cGUiOiJyZW1hdGNoIiwidmFsdWUiOiJ0
ZXh0XFwvaHRtbHxhcHBsaWNhdGlvblxcL3htbCIsIm9wdGlvbiI6ImlzIn0seyJ0
eXBlIjoiY3VzdG9tUmVzdWx0IiwicmVzdWx0IjoiaGVhZGVycyIsInJlZ2V4Ijoi
bGFzdC1tb2RpZmllZDouKz8oXFxkezEsMn0pLj8oXFx3ezN9KS4/KFxcZHs0fSki
LCJyZWdleFR5cGUiOiIiLCJyZXN1bHRUeXBlIjoiZmxhdCIsImFycmF5TmFtZSI6
IiIsInJlc3VsdHMiOlsibG1EYXkiLCJsbU1TdHJpbmciLCJsbVllYXIiXX1dXSwi
cmVzdWx0c0Zvcm1hdCI6IiRwMS5wcmVzZXQiLCJyZXN1bHRzU2F2ZVRvIjoiZmls
ZSIsInJlc3VsdHNGaWxlTmFtZSI6InNpdGVtYXAueG1sIiwiYWRkaXRpb25hbEZv
cm1hdHMiOltdLCJyZXN1bHRzVW5pcXVlIjoibm8iLCJxdWVyeUZvcm1hdCI6WyIk
cXVlcnkiXSwidW5pcXVlUXVlcmllcyI6dHJ1ZSwic2F2ZUZhaWxlZFF1ZXJpZXMi
OmZhbHNlLCJpdGVyYXRvck9wdGlvbnMiOnsib25BbGxMZXZlbHMiOmZhbHNlLCJx
dWVyeUJ1aWxkZXJzQWZ0ZXJJdGVyYXRvciI6ZmFsc2V9LCJyZXN1bHRzT3B0aW9u
cyI6eyJvdmVyd3JpdGUiOnRydWV9LCJkb0xvZyI6Im5vIiwia2VlcFVuaXF1ZSI6
Ik5vIiwibW9yZU9wdGlvbnMiOnRydWUsInJlc3VsdHNQcmVwZW5kIjoiPD94bWwg
dmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XG48dXJsc2V0IHht
bG5zPVwiaHR0cDovL3d3dy5zaXRlbWFwcy5vcmcvc2NoZW1hcy9zaXRlbWFwLzAu
OVwiPlxuIiwicmVzdWx0c0FwcGVuZCI6IjwvdXJsc2V0PiIsInF1ZXJ5QnVpbGRl
cnMiOltdLCJyZXN1bHRzQnVpbGRlcnMiOltdLCJjb25maWdPdmVycmlkZXMiOltd
fX0=

Примечания:
  • не каждый сервер и не для каждой страницы возвращает заголовок last-modified;
  • в зависимости от наличия заголовка last-modified для текущей ссылки будут (или нет, если данный заголовок не вернулся) описаны параметры <lastmod> и <changefreq>;
  • <changefreq> рассчитывается на основе периода времени, прошедшего с момента последнего изменения страницы;
  • <priority> рассчитывается в зависимости от глубины страницы;
  • глубина сбора ссылок регулируется параметром Parse to level;
  • не рекомендуется ставить большую глубину, т.к. ограничение в одном sitemap.xml 50000 URL.
В конечном результате карта сайта выглядит так:
BJone.png
 
Здравствуйте! Работаю с примером http://a-parser.com/threads/1711/, получил много ссылок вида http://site.ru/forumdisplay.php?s=dfkfhdkhfkhd&amp;f=36 и ссылки с мемберами в таком же виде, . Все ссылки открываются только убрав хвост с ; включительно. Но вопрос не в этом, это можно решить регулярками. Каким-то образом можно получить иерархию ссылок в виде дерева с разделами, подразделами, а не общей кучей? В результате уже около млн ссылок, а процесс парсинга еще не закончен.

В идеале получить карту как в программах SG. Их минус во много раз медленной работе, чем А-Парсер
 
Последнее редактирование:
Добрый день.
получил много ссылок вида http://site.ru/forumdisplay.php?s=dfkfhdkhfkhd&amp;f=36 и ссылки с мемберами в таком же виде. Все ссылки открываются только убрав хвост с ; включительно.
Применяйте к ссылкам Конструктор результатов - Decode HTML entities для преобразования &amp; в &
Каким-то образом можно получить иерархию ссылок в виде дерева с разделами, подразделами, а не общей кучей?
Да, можно, вот пример: http://a-parser.com/threads/1880/
 
  • Like
Реакции: murl
Спасибо, пытаюсь настроить регулярные выражения для парсинга vBulletin. Пока делаю по Вашим настройкам.
Буду благодарен, если поможете разобраться.

Сложности:
У меня получилось 2регулярки
для forumdisplay <a href="([^"]+)"><strong>(.+?)</strong></a> и <a href="([^"]+)" id="([^"]+)" style="([^"]+)">(.+?)</a> для showthread. Скорее всего далеки до идеала, мои первые подобные регулярки.
Мемберы мне пока не интересны. Нужна карта, чтобы по ней потом ходить. Не понял пока, как объединить эти регулярки и применить ваш парсет.

По парсингу:
Но текущее время парсинга результатов более 7млн, но в файле sitemap.xml менее 800 000 строк.
 
Последнее редактирование:
Непонятно о чем речь: о карте сайта по примеру http://a-parser.com/threads/1711/, или о дереве категорий, как в http://a-parser.com/threads/1880/ ?
1:

Но текущее время парсинга результатов более 7млн, но в файле sitemap.xml менее 800 000 строк.
- о карте сайта

2:

для парсинга vBulletin для forumdisplay <a href=...
- о дереве сайта :)
 
Не понял пока, как объединить эти регулярки и применить ваш парсет.
В примере логика работы описана. Изучите детально пример, чтобы разобраться как это работает. А дальше по аналогии делайте для вашего сайта.
 
Прокомментируйте еще пожалуйста
результатов более 7млн, но в файле sitemap.xml менее 800 000 строк?
если нужно, добавлю свой парсет, но он точная копия примера из темы, только ссылка другая
 
Последнее редактирование:
Это особенность работы этого пресета. Общее кол-во результатов - это общее кол-во найденных ссылок, кол-во уникальных результатов - кол-во ссылок после уникализации. А в файле результата кол-во строк вообще не будет соответствовать ни одному из этих чисел, т.к. на каждую ссылку выводится несколько строк, и каждая ссылка выводится в результат только после того, как парсер по ней перейдет. Соответственно, на последнем уровне глубины, парсер получит внутренние ссылки и они отобразятся в общем кол-ве результатов, но в файл результата они уже не попадут, т.к. парсер по ним не перейдет, потому что это последний уровень.
 
  • Like
Реакции: murl
Скажите пожалуйста, а как сделать чтобы в sitemap конечный результат, были записаны ссылки только третьего уровня?
 
Просто добавьте еще один фильтр:
j8IeV.png

P.S. Для того, чтобы источник фильтра задать query.lvl, нужно выбрать Custom template и вписать переменную.
 
Хорошее видео https://a-parser.com/threads/2345/ , на основе пресета http://a-parser.com/threads/1711/ можно составить турбо страницы для яндекса, всего лишь прикрутив HTML::TextExtractor (тут подымалась тема https://a-parser.com/threads/4733/ как то там тихо).
Если составлять задание, прикручивая второе задание. Приходиться выбирать второй парсер и собирать задание по новому. Есть в планах реализации добавления в задание второго готового задания, смежного в выполнении задачи?
 
Не совсем понятно, о чем именно речь.
Если вы хотите запускать второе задание сразу после окончания работы первого, то можно использовать Цепочки заданий: https://a-parser.com/threads/2267/#post-7326 (пример использования: https://a-parser.com/resources/146/)
Если же вопрос заключается в том, чтобы использовать в одном задании несколько парсеров, то такая возможность есть: https://a-parser.com/wiki/several-parsers/
 
Не совсем понятно, о чем именно речь.
Если вы хотите запускать второе задание сразу после окончания работы первого, то можно использовать Цепочки заданий: https://a-parser.com/threads/2267/#post-7326 (пример использования: https://a-parser.com/resources/146/)
Если же вопрос заключается в том, чтобы использовать в одном задании несколько парсеров, то такая возможность есть: https://a-parser.com/wiki/several-parsers/
Да, есть такая возможность задания добавлять. Но их приходиться переписывать, было бы неплохо добавлять уже готовое задание не переписывая его.
 
Назад
Верх