Как парсить контакты с разных сайтов, имея только их список

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

  1. begin

    begin New Member Пользователи

    Регистрация:
    3 мар 2012
    Сообщения:
    4
    Есть задача: получить контакты с сайтов определенных компаний.

    Список ссылок на сайты я получаю путем создания проекта для парсера: он через специальный поисковик собирает ссылки на профайлы компаний, соответствующих моим критериям, а дальше парсит с них адреса сайтов этих компаний.

    Итак, на выходе у меня получается файл со списком сайтов.
    Насколько я понимаю, я могу теперь создать второй проект, загрузить в него ссылки из файла и запустить парсинг контента.

    Но вот вопрос: как мне настроить фильтры универсально для все сайтов, которые попадутся в списке? Ведь все сайты будут на разных движках, а мне нужно со всех них умудрится взять контакты: телефоны, имейлы и т.д.
    Подскажите, как тут быть?
     
  2. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Я так понимаю, что "списки", это ссылки на сайты?
    Надо посмотреть орбразец такого "списка".

    А вообще, надо искать общий принцип, присутствующий в нужном поле. Например, для емэйлов это знак
    @ - собачки. Для телефонов может быть
    +, 7, (код),
    По этим признакам искать нужную информацию на странице.

    Самое простое и лёгкое решение использовать регулярные выражения (при условии, что умеешь ими пользоваться). Регулярные выражения можно использовать во всех полях поиска-замены Ссылки недоступны для гостей
     
  3. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Емэйлы, парсятся как и любые другие ссылки

    Емэйлы, если они вставлены на сайт и обрамлены в тэги, парсятся как и любые ссылки.
    Код:
    <a href="mailto:office@ererer.ru">office@ererer.ru</a>
    Границы парсинга будут такими:
    <a href="mailto:office@ererer.ru">office@ererer.ru</a>
    В опциях надо проставить преобразование в html.

    Если емэйлы не обрамлены в тэги, то есть вставлены как текст, тогда - надо творить регулярку. И тут вариантов много. Вот один из вариантов:
    Код:
    [\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+
     
  4. begin

    begin New Member Пользователи

    Регистрация:
    3 мар 2012
    Сообщения:
    4
    Valiks, спасибо за подсказку по границам парсинга. Еще хочу уточнить:
    1. как учесть, что может встретиться несколько имейлов на странице?
    2. вы привели пример регулярного выражения, но как именно его использовать? в каком поле? ведь в помощи приведены какие-то свои "родные" тэги парсера для поиска-замены.
    3. как можно подобными способами находить на страницах И телефоны?
    задавать в начале "+7", а в конце " " в качестве границ?
    4. если я делаю вывод спарсенного контента в один файл, то как мне отдельной колонкой выводить в нем адреса сайтов? просто названия компаний на этих страницах уже не будут встречаться, поэтому просто настанет путаница - где чьи контакты.
    5. как учесть при поиске вот такие имейлы: "mail2%40mail.ru" ? (очень редко, но попадаются). Т.е. "собака" заменена сущностью.

    По вашему предыдущему вопросу - файл со спарсенным списком ссылок выглядит так:
    Ссылки недоступны для гостей
    Ссылки недоступны для гостей
    ...
    Ссылки недоступны для гостей

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
     
  5. Valiks

    Valiks New Member Супер Модератор

    Регистрация:
    18 янв 2012
    Сообщения:
    554
    Адрес:
    Всё время в скэйпе
    Начну с заду, и попробую объяснить то, что знаю я. Но для полного ответа, придётся прибегнуть к помощи более компетентных в программировании людей.

    За 1 цикл можно будет запустить всё в CD, если задать настройки по поиску нужных ссылок, затем включить чекбокс "Автоматически запускать парсер контента" во вкладке "Ссылки".

    1. чем Гугле не устраивает? Впрочем, это не так важно, но в программе под него есть уже настроенный проект, куда можно вставлять свои ключевики для поиска
    2. То, что не переводит "%D1%84%..." это я тоже заметил, на некоторых сайтах, действительно из-за этого нет возможности получить данные. Но тут три пути решения,- 1. Попросить автора программы включить нужный функционал. 2. Задать на нужном сайте поисковые фразы, получить вариант перевода, и скопировать полученные слова оттуда. 2. Найти программку, которая показывает текст в этом виде (забыл, как это называется).
    3, 4, 5...6. с остальным понятно. Без мусора тут не обойтись. А вот далее, надо решить задачу чистки.

    настроив шаблон так, чтобы поиск аргумента вёлся по всей странице или по всей области, где могут попадаться емэйлы. Обычно всё в пределах тэгов body, но, можно поискать и другие варианты, чтобы избежать мусора. Если регулярка будет правильно настроена, лучше задавать страницу целиком.

    Точно ещё сам не знаю, надо автора CD спросить. Один из моментов, для наботы регуляки, задать
    re:П.*н|Перегон

    Вот это re: впереди должно сделать поиск-замену регуляркой. Но вот заставить её работать для фильтрации емэйлов я не смог.

    Регулярное выражение я привёл самое так самое простое или одно из... множества. Наверное, тут проще было бы найти скрипт проверки емэйлов, закинуть его куда-нибудь себе на сервер, и через него решать задачу, подклчив его к CD. Я находил много таких вариантов в инете.
    Это тоже возможно, но тут повозиться придётся, поискать алгоритмы для регулярки. Надо иметь сотню спарсенных ссылок с вариантами номеров телефона (тут большой хаос, каждый пишет, как ему вздумается), и поискать закономерности, потом составить регулярное выражение.
    Это самое простое. Парсишь в CSV (или создаёшь форматированный шаблон, например, с колонками) и используешь в нужной колонке <CD_DOCURL!> и всего делов
    Никак не учтёшь. Только методом перебора или выборки. Найти таких вариантов побольше и под них создавать правила.

    В целом, надо сказать, что абсолютно чистый контент получить только средствами автоматики невозможно. То, что увидит сам человек, программа не сможет увидеть. Это надо понимать. Однако, автоматикой можно сильно облегчить себе жизнь.

    P.S. Кстати, есть программы, экстракторы емэйлов, их много. НО, каждая из них страдает своими недостатками. Нарпимер,- нет сортировки, нельзя задать нужные страницы, выбрать тематику сайтов, либо, как в этом легко убедиться, программа не может найти то, что в CD легко реализуется. К примеру, номера телефонов или емэйлы с некоторых сайтов.
     
    Последнее редактирование: 11 мар 2012

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