Собрать ссылки и дополнить файл

Тема в разделе "Решение различных задач по парсингу", создана пользователем gans, 17 дек 2017.

  1. gans

    gans Well-Known Member Пользователи

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Всем добрый день!

    Спарсил в csv список организаций вида: название, адрес, сайт. См. прикрепленный пример.

    Хочу получить контактные данные с сайтов макросами [EXTRACTEMAILS] и [EXTRACTPHONES].

    Проблема в том, что эти данные часто не находятся на главных страницах, а на страницах - вида /contact.

    Можно получить ссылки из сканера с фильтром contact, добавить ссылки главных страниц, а потом спарсить контактную информацию. Только как потом объединить это всё дело с первоначальным файлом?

    Ещё лучше было бы при первоначальном парсинге иметь возможность автоматически пройтись по ссылкам сайта и собрать емэйлы и телефоны.

    Может быть, есть у кого-то идеи, в какую сторону копать?
     

    Вложения:

    • sss.csv
      Размер файла:
      2 КБ
      Просмотров:
      2
  2. xLime

    xLime Well-Known Member Супер Модератор Модератор

    Регистрация:
    4 сен 2017
    Сообщения:
    401
    Добрый день.
    Попробуйте использовать макрос Ссылки недоступны для гостей.

    Также в качестве пост обработки можно использовать функцию =ВПР в Экселе.
    Если обработку нужно производить многократно, то создаёте отдельный файл с формулами, которые будут брать данные из других файлов - спаренных таблиц. Вам нужно будет нажать только кнопку посчитать.
     
  3. gans

    gans Well-Known Member Пользователи

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    По поводу GETMORECONTENT - при начальном парсинге я не знаю адреса страниц с контактными данными. Их приходится получать последующим сканированием после получения первого файла. Если бы GETMORECONTENT мог сканировать в процессе парсинга, проблемы бы не было.

    Собственно, к ВПР присматриваюсь. Кстати, отличная альтернатива - Слияние двух файлов в редакторе CSV. С ВПР в Экселе тоже не всё так просто. Получается разное количество строк, т.к. где-то страниц contact может быть больше одной, а где-то может и не быть, также к страницам contact будут добавлены главные. К тому же, нужно цепляться к какому-то столбцу.
     
    Последнее редактирование: 17 дек 2017
  4. Kreol

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

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    создаете столбец с param и дополняете все время ссылки по нему
    link[param]:привязка
    И при парсинге контактов этот парам в csv передаете
    ВПР тут помощник, но не особо. Нужно писать отдельный макрос для расстановки
     
    gans нравится это.
  5. gans

    gans Well-Known Member Пользователи

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Добрый день!
    Можно описать чуть подробнее? Дошел до реализации на практике и возникли проблемы. :(

    1. Создаю столбец link[param]:привязка;
    2. Получившийся столбец копирую в сканер сайтов;
    3. Сканирую и получаю ссылки;
    4. Паршу контактную информацию во второй файл;
    5. Соединяю первый файл с контактной информацией через ВПР или Редактор CSV. На данном этапе затык, т.к. ссылок с контактной информацией может получиться больше, чем привязок в первом файле. Контактные данные могут содержаться на разных страницах одного сайта. Например, на Главной и в разделе Контакты.
     
    Последнее редактирование: 7 мар 2018
  6. Kreol

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

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    а парам разве с сканере нельзя добавлять к найденным ссылкам? я не пользуюсь сканером просто.
     
    Root нравится это.
  7. gans

    gans Well-Known Member Пользователи

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Можно. Но не в этом дело, если я правильно понимаю.

    Как я понимаю, нужно это делать двумя проектами. Первый проект - парсинг организаций(Название, Почтовый адрес, сайт), второй проект - контактные данные(email). Потом объединить. Или можно сделать одним проектом?
     
  8. Kreol

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

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Вы хотите сказать
    что на входе имеем например link[param]:Маша
    а на выходе есть
    link[param]:Маша телефон
    link[param]:Маша маил1
    link[param]:Маша маил2
    ???
     
  9. gans

    gans Well-Known Member Пользователи

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Наверное, я не понимаю, как вы предлагаете сделать.

    Конкретный пример. Проект прикреплен. Мне нужно спарсить организации из каталога, где не указана электронная почта. Получаю ссылки из каталога, дальше паршу данные. В данном примере отдельной границей спарсился сайт
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    . Если я применю макрос [EXTRACTEMAILS] к границе сайта, то получу только одну почту
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    с главной страницы. Но на сайте есть раздел
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    , где почт значительно больше. Адресов разделов я не знаю заранее, как и не знаю, будет ли почта на главной странице. Т.е., как я предполагаю, мне нужно при парсинге или после него собрать страницы с контактными данными конкретного сайта из таблицы, зайти на них и спарсить эл. почту, если она там есть.
     

    Вложения:

    Последнее редактирование: 7 мар 2018
  10. Kreol

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

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Буду возле компа гляну
     
  11. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Как вариант добавить еще один этап.
    Этап\проект который собирает ссылки со страницы каждого сайта по вхождению
    /conta*
    /konta*
    /about
    /feedba*
     
  12. gans

    gans Well-Known Member Пользователи

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    Примерно так я сейчас и делаю. Только использую в одном проекте. Простыня с различными вариантами. Пример на скриншоте.

    [​IMG]
    Проблема в том, что я не могу предусмотреть и засунуть в проект все варианты страниц контактов, например about-us/contact и т.д., а они попадаются. К тому же, это замедляет скорость. Ищу лучшее решение.

    Если отдельным проектом спарсить контакты, то как всё это объединить?
     
    Последнее редактирование: 7 мар 2018
  13. Kreol

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

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    Я бы сделал так.
    Взял бы список присвоил в параметрах нумерацию
    например
    link[PARAM]:<num>1<что-то еще><->
    вторым проектом собрал бы ссылки на контакты с параметрами
    и получил бы в итоге
    link_contact1[PARAM]:<num>1<что-то еще><->
    link_contact2[PARAM]:<num>1<что-то еще><->
    link_contact3[PARAM]:<num>1<что-то еще><->

    а потом бы сопоставил по этому самому <num>
    И в итоге получил бы
    link[PARAM]:<num>1<что-то еще><contact1>link_contact1<contact2>link_contact2<contact3>link_contact3<->
    И вот ту простыню обрабатываем в новом амплуа.
    с просто с основного link забираем то что можно. А с парам через getmore и FIRSTREPLACE и обрабатывал. Это будет быстрее и правильнее.

    Напиши мне в скайп.
     
  14. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Лучше google никто не сделает))
    site:saytkompanii.com +"contact"
     
  15. Kreol

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

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    И баны по айпи)
     
  16. gans

    gans Well-Known Member Пользователи

    Регистрация:
    21 апр 2014
    Сообщения:
    309
    А вот и нет. ;) Вопрос даже не в банах - я могу решить этот вопрос. Мне важно собрать как можно больше контактов. Гораздо надежнее сканером собрать ссылки первого уровня и задать фильтры: contact, kontakt и т.д.
     
    Последнее редактирование: 7 мар 2018

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