Вопрос по двум макросам (CD_DOCURL и DOCSOURCE)

Тема в разделе "Решение различных задач по парсингу", создана пользователем Vladyslav, 3 мар 2015.

  1. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    В ходе написания очередного шаблона возникло несколько вопросов:
    1. Пришлось для поиск-замены каждый раз вставлять DOCSOURCE (7 разных столбцов в csv), что, в свою очередь, стало есть в 3 раза больше оперативной памяти (более 1 Гига). Скажите, причина в чрезмерном использовании DOCSOURCE? И есть ли возможность оптимизировать шаблон, то есть, использовать один раз макрос DOCSOURCE и из него вытянуть информацию для 7-ми столбцов?

    2. При использовании макроса CD_DOCURL программа выдает урл, на который переходил CD, если сайт редиректит, то все равно выдается урл, указанный в программе. Реально ли сделать так, чтобы при редиректе указывался редиректный урл?
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    1) Не нужно парсить DOCSOURCE, нужно задавать границы парсинга. Тогда код документа (видимо, он очень большой) 7 раз в память грузится не будет, а только 1 раз;

    2) Ctrl+h - включить галочку "работать с редиректными ссылками".

    С уважением к вам, Сергей...
     
  3. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Спасибо за ответы. По первому пункту ситуация следующая - мне нужно распарсить десятки тысяч разных сайтов, границы, разумеется, везде разные. Пока самое лучшее, что придумал - выдергивать через функцию поиск замены.
     
  4. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Пожалуйста.

    Обратите внимание на динамические границы парсинга Ссылки недоступны для гостей они созданы как раз для таких случаев.

    Можете сказать, что вы парсите (мейлы, телефоны...) и тогда, возможно, подберу вам лучшее решение для этого.

    С уважением к вам, Сергей...
     
  5. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Собираю со списка сайтов адреса их групп в социальных сетях.
     
  6. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Это делается одной "регуляркой" к одному [DOCSOURCE] (для каждой соц сети). К сожалению, я в "регулярки" не вникал и обхожусь своими функциями. Сейчас попрошу господина Kagorec составить вам регулярное выражение для этого.
     
  7. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Предположительно вы ищете в контактах сайта их группы социальных сетей.
    Ктото недавно на форуме уже спрашивал подобное, повторим)
    Этих регулярных выражений вполне хватит.
    Код:
    re:vk\.com/([a-zA-Z0-9\._]{3,})|<vk>vk.com/$1</vk>
    re:facebook\.com/pages/([^\s\t\<>/]+)|<fb>facebook.com/pages/$1</fb>
    re:facebook\.com/(a-zA-Z0-9\._]{4,})([\s\t\r\n<>]+)|<fb>facebook.com/$1</fb>
    re:ok\.ru/group/([0-9]+)|<ok>ok.ru/group/$1</ok>
    re:ok\.ru/([a-zA-Z0-9\._]{3,})([\s\t\r\n<>]+)|<ok>ok.ru/$1</ok>
     
    Последнее редактирование: 3 мар 2015
  8. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Спасибо!

    Эту конструкцию используйте в макросе поиск-замены [REPLACE] применительно к [DOCSOURCE].

    С уважением к вам, Сергей...
     
  9. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Пробовал, все равно выдает ссылку на указанный в программе сайт, а не на редиректный.

    Вот пример -
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
     
  10. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Так как, можно все таки получать редиректную ссылку, а не указанную в проекте? Протестировал на 16000 сайтов, ни разу не взялась редиректная ссылка, хотя все сделал, как Вы указали.
     
  11. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Здравствуйте!
    какая у вас версия программы?
     
  12. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Обновитесь до последней версии и заработает.
     
  13. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Обновился, заработало, спасибо.

    Теперь возникает еще один вопрос, а как-то реально в один столбец CSV файла получать урл, который загружен в программу, а в другой редиректный для их последующего сравнения?
     
    Последнее редактирование: 6 мар 2015
  14. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте еще раз. Пожалуйста! Рады помочь...

    Открыть фильтры ссылок (ctrl+3) и в поле "поиск-замена" прописать:
    Закрыть окно фильтров, сделать правый клик по списку ссылок и выбрать пункт контекстного меню "применить фильтры к списку ссылок".

    В шаблон вывода (ctrl+2) прописать [PARAM] для вывода "оригинального URL".

    С уважением к вам, Сергей...
     
  15. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Скажите, а как можно проверить работоспособность сайта? Чтобы не только из лога можно было вытащить незагруженные сайты, но и в шаблоне вывести
     
  16. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Здравствуйте.

    Нажать ctrl+6 и там прописать то, что будет выводиться в результат в случае неудачной загрузки WEB-документа.

    С уважением к вам, Сергей...
     
  17. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Подскажите, пожалуйста, а реально ли вывести ссылки по заданному фильтру или критерию в шаблоне парсинга контента, а не ссылок? К примеру, у меня есть список ссылок, мне нужно проверить в коде есть определенная ссылка или нет (к примеру *feedback*), если есть - вывести CD_DOCURL и ссылку, если нет CD_DOCURL и "данная ссылка отсутствует".
     
  18. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Здравствуйте!
    CD_DOCURL и есть та ссылка которая находится в парсере. что означает ваше
    не совсем понятно.
    Если речь идет имено о списке ссылок который загружен.
    1) Идете на вкладку Ссылки
    2) Открываете фильтр ссылок
    3) пишете в шаблоне для ссылок feedback и нажимаете "Готово"
    4) нажимаете правую кнопку мыши на ссылках и найдите пункт "Применить фильтры к списку ссылок"

    Если же речь идет о ссылках, которые присутствуют в коде страницы.
    Тогда в шаблоне прописываете такую конструкцию.
    Код:
    [CHECKENTRY(feedback)][DOCSOURCE][THENTEXT]<CD_DOCURL!>[/CHECKENTRY]
     
  19. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Еще есть удобный функционал для фильтрации (с поддержкой длинного списка) - фильтрация документов по списку ключевиков.
    Сочетание клавишь shift+ctrl+t и далее указывайте свой список построчно.
    Обратите винимание что внизу окна есть описание - чтоб в шаблон вывода вывести кей от которого отфильтрован контент, используйте макрос [FKEY]
     
    Последнее редактирование: 2 апр 2015
  20. Vladyslav

    Vladyslav Member Пользователи

    Регистрация:
    20 фев 2015
    Сообщения:
    58
    Все именно так.
    На выходе нужно получить
    Урл сайта (CD_DOCURL) и ссылку из кода по заданным критериям.
     

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