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

Пример составления карты сайта (sitemap) с помощью А-Парсера

  1. Support

    Support Administrator
    Команда форума A-Parser Enterprise

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

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

    Ну что же, вот само задание.
    [​IMG]
    [​IMG]
    Код:
    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.
    В конечном результате карта сайта выглядит так:
    [​IMG]
     
    vipdenya, LmPopo, relay и ещё 1-му нравится это.
  2. murl

    murl A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    14 авг 2016
    Сообщения:
    17
    Симпатии:
    2
    Здравствуйте! Работаю с примером http://a-parser.com/threads/1711/, получил много ссылок вида http://site.ru/forumdisplay.php?s=dfkfhdkhfkhd&amp;f=36 и ссылки с мемберами в таком же виде, . Все ссылки открываются только убрав хвост с ; включительно. Но вопрос не в этом, это можно решить регулярками. Каким-то образом можно получить иерархию ссылок в виде дерева с разделами, подразделами, а не общей кучей? В результате уже около млн ссылок, а процесс парсинга еще не закончен.

    В идеале получить карту как в программах SG. Их минус во много раз медленной работе, чем А-Парсер
     
    #2 murl, 29 авг 2016
    Последнее редактирование: 29 авг 2016
  3. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.200
    Симпатии:
    1.483
    Добрый день.
    Применяйте к ссылкам Конструктор результатов - Decode HTML entities для преобразования &amp; в &
    Да, можно, вот пример: http://a-parser.com/threads/1880/
     
    murl нравится это.
  4. murl

    murl A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    14 авг 2016
    Сообщения:
    17
    Симпатии:
    2
    Спасибо, пытаюсь настроить регулярные выражения для парсинга vBulletin. Пока делаю по Вашим настройкам.
    Буду благодарен, если поможете разобраться.

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

    По парсингу:
    Но текущее время парсинга результатов более 7млн, но в файле sitemap.xml менее 800 000 строк.
     
    #4 murl, 29 авг 2016
    Последнее редактирование: 30 авг 2016
  5. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.200
    Симпатии:
    1.483
  6. murl

    murl A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    14 авг 2016
    Сообщения:
    17
    Симпатии:
    2
    1:

    - о карте сайта

    2:

    - о дереве сайта :)
     
  7. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.200
    Симпатии:
    1.483
    В примере логика работы описана. Изучите детально пример, чтобы разобраться как это работает. А дальше по аналогии делайте для вашего сайта.
     
  8. murl

    murl A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    14 авг 2016
    Сообщения:
    17
    Симпатии:
    2
    Прокомментируйте еще пожалуйста
    если нужно, добавлю свой парсет, но он точная копия примера из темы, только ссылка другая
     
    #8 murl, 30 авг 2016
    Последнее редактирование: 30 авг 2016
  9. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.200
    Симпатии:
    1.483
    Это особенность работы этого пресета. Общее кол-во результатов - это общее кол-во найденных ссылок, кол-во уникальных результатов - кол-во ссылок после уникализации. А в файле результата кол-во строк вообще не будет соответствовать ни одному из этих чисел, т.к. на каждую ссылку выводится несколько строк, и каждая ссылка выводится в результат только после того, как парсер по ней перейдет. Соответственно, на последнем уровне глубины, парсер получит внутренние ссылки и они отобразятся в общем кол-ве результатов, но в файл результата они уже не попадут, т.к. парсер по ним не перейдет, потому что это последний уровень.
     
    murl нравится это.
  10. Zlodeys

    Zlodeys A-Parser Pro License
    A-Parser Pro

    Регистрация:
    2 фев 2016
    Сообщения:
    41
    Симпатии:
    22
    Скажите пожалуйста, а как сделать чтобы в sitemap конечный результат, были записаны ссылки только третьего уровня?
     
  11. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.200
    Симпатии:
    1.483
    Просто добавьте еще один фильтр:
    [​IMG]
    P.S. Для того, чтобы источник фильтра задать query.lvl, нужно выбрать Custom template и вписать переменную.
     
    murl и Zlodeys нравится это.
  12. Zlodeys

    Zlodeys A-Parser Pro License
    A-Parser Pro

    Регистрация:
    2 фев 2016
    Сообщения:
    41
    Симпатии:
    22
    Спасибо!
     
    Support нравится это.
  13. Vvtex

    Vvtex A-Parser Pro License
    A-Parser Pro

    Регистрация:
    9 окт 2017
    Сообщения:
    103
    Симпатии:
    17
    Хорошее видео https://a-parser.com/threads/2345/ , на основе пресета http://a-parser.com/threads/1711/ можно составить турбо страницы для яндекса, всего лишь прикрутив HTML::TextExtractor (тут подымалась тема https://a-parser.com/threads/4733/ как то там тихо).
    Если составлять задание, прикручивая второе задание. Приходиться выбирать второй парсер и собирать задание по новому. Есть в планах реализации добавления в задание второго готового задания, смежного в выполнении задачи?
     
  14. Support

    Support Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    16 мар 2012
    Сообщения:
    2.200
    Симпатии:
    1.483
    Не совсем понятно, о чем именно речь.
    Если вы хотите запускать второе задание сразу после окончания работы первого, то можно использовать Цепочки заданий: https://a-parser.com/threads/2267/#post-7326 (пример использования: https://a-parser.com/resources/146/)
    Если же вопрос заключается в том, чтобы использовать в одном задании несколько парсеров, то такая возможность есть: https://a-parser.com/wiki/several-parsers/
     
    Vvtex нравится это.
  15. Vvtex

    Vvtex A-Parser Pro License
    A-Parser Pro

    Регистрация:
    9 окт 2017
    Сообщения:
    103
    Симпатии:
    17
    Да, есть такая возможность задания добавлять. Но их приходиться переписывать, было бы неплохо добавлять уже готовое задание не переписывая его.
     

Поделиться этой страницей