1. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

Пресет Объединить два задания в одно 1.0

Пример парсинга контактов одним заданием с использованием $tools.query

  1. Patrick

    Patrick A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    17 июл 2017
    Сообщения:
    5
    Симпатии:
    1
    Доброго времени суток!

    Есть два задания - 1ое собирает тайтлы, описание страниц и парсит ссылки с упоминанием киворда; 2ое собирает с собранных страниц email

    Как это делается сейчас
    1 задание
    1. query - список ссылок в формате https://a-parser.com/
    2. сначала проходим Net:HTTP и парсим title и description страницы (как в примере https://a-parser.com/threads/1519/)
    3. потом через HTML:LinkExtractor вытаскиваем ссылки, где встречаются ключевые слова contact|kontakt|support (как описано в примере https://a-parser.com/threads/1031/)
    4. на выходе выводим query, title, description, contact link
    Код:
    eyJwcmVzZXQiOiJ0aXRsZSxkZXNjcmlwdGlvbixjb250YWN0dXNwYWdlIiwidmFs
    dWUiOnsicHJlc2V0IjoidGl0bGUsZGVzY3JpcHRpb24sY29udGFjdHVzcGFnZSIs
    InBhcnNlcnMiOltbIk5ldDo6SFRUUCIsImRlZmF1bHQiLHsidHlwZSI6ImN1c3Rv
    bVJlc3VsdCIsInJlc3VsdCI6ImRhdGEiLCJyZWdleCI6Ijx0aXRsZT4oW148Pl0q
    KTwvdGl0bGU+IiwicmVnZXhUeXBlIjoiaXMiLCJyZXN1bHRUeXBlIjoiZmxhdCIs
    ImFycmF5TmFtZSI6IiIsInJlc3VsdHMiOlsidGl0bGUiXX0seyJ0eXBlIjoiY3Vz
    dG9tUmVzdWx0IiwicmVzdWx0IjoiZGF0YSIsInJlZ2V4IjoiPG1ldGEgbmFtZT1c
    ImRlc2NyaXB0aW9uXCIgY29udGVudD1cIiguKj8pXCIgPy8/PiIsInJlZ2V4VHlw
    ZSI6ImlzIiwicmVzdWx0VHlwZSI6ImZsYXQiLCJhcnJheU5hbWUiOiIiLCJyZXN1
    bHRzIjpbImRlc2MiXX1dLFsiSFRNTDo6TGlua0V4dHJhY3RvciIsImRlZmF1bHQi
    LHsidHlwZSI6ImZpbHRlciIsInJlc3VsdCI6WyJpbnRsaW5rcyIsImxpbmsiXSwi
    ZmlsdGVyVHlwZSI6InJlbWF0Y2giLCJ2YWx1ZSI6ImNvbnRhY3R8a29udGFrdHxz
    dXBwb3J0Iiwib3B0aW9uIjoiaSJ9LHsidHlwZSI6Im92ZXJyaWRlIiwiaWQiOiJm
    b3JtYXRyZXN1bHQiLCJ2YWx1ZSI6IiRpbnRsaW5rcy5mb3JtYXQoJyRsaW5rOycp
    In1dXSwicmVzdWx0c0Zvcm1hdCI6IiRxdWVyeTskcDEudGl0bGU7JHAxLmRlc2M7
    JHAyLnByZXNldFxcbiIsInJlc3VsdHNTYXZlVG8iOiJmaWxlIiwicmVzdWx0c0Zp
    bGVOYW1lIjoiJGRhdGVmaWxlLmZvcm1hdChSZXN1bHRzOlRpdGxlLGRlc2NyKS5j
    c3YiLCJhZGRpdGlvbmFsRm9ybWF0cyI6W10sInJlc3VsdHNVbmlxdWUiOiJubyIs
    InF1ZXJpZXNGcm9tIjoidGV4dCIsInF1ZXJ5Rm9ybWF0IjpbIiRxdWVyeSJdLCJ1
    bmlxdWVRdWVyaWVzIjpmYWxzZSwic2F2ZUZhaWxlZFF1ZXJpZXMiOmZhbHNlLCJp
    dGVyYXRvck9wdGlvbnMiOnsib25BbGxMZXZlbHMiOmZhbHNlLCJxdWVyeUJ1aWxk
    ZXJzQWZ0ZXJJdGVyYXRvciI6ZmFsc2UsInF1ZXJ5QnVpbGRlcnNPbkFsbExldmVs
    cyI6ZmFsc2V9LCJyZXN1bHRzT3B0aW9ucyI6eyJvdmVyd3JpdGUiOmZhbHNlfSwi
    ZG9Mb2ciOiJubyIsImtlZXBVbmlxdWUiOiJObyIsIm1vcmVPcHRpb25zIjp0cnVl
    LCJyZXN1bHRzUHJlcGVuZCI6IiIsInJlc3VsdHNBcHBlbmQiOiIiLCJxdWVyeUJ1
    aWxkZXJzIjpbXSwicmVzdWx0c0J1aWxkZXJzIjpbXSwiY29uZmlnT3ZlcnJpZGVz
    IjpbXSwicnVuVGFza09uQ29tcGxldGUiOm51bGwsInVzZVJlc3VsdHNGaWxlQXNR
    dWVyaWVzRmlsZSI6ZmFsc2UsInJ1blRhc2tPbkNvbXBsZXRlQ29uZmlnIjoiZGVm
    YXVsdCIsInRvb2xzSlMiOiIiLCJwcmlvIjo1LCJxdWVyaWVzIjoiaHR0cDovL3d3
    dy5hcGtkbG1vZC5jb21cbmh0dHA6Ly9iZG11c2ljMjMubGlmZVxuaHR0cDovL3d3
    dy5hcGtsb3Zlci5uZXRcbmh0dHA6Ly9paGFja2VkaXQuY29tLyJ9fQ==

    2 задание
    1. берем список ссылок на страницы с контактами из первого задания (формата https://a-parser.com/pages/support/open)
    2. парсим имейлы с этих страниц через HTML::EmailExtractor
    3. выводим в формате $query, email

    далее руками объединяем обе выдачи. Подскажите, пжл, как можно объединить два задания?
     
  2. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Добрый день.
    Да, эти задания можно объединить в одно. Для этого нужно воспользоваться инструментом tools.query.add. Пример объединения двух заданий в одно с помощью tools.query рассмотрен в этой статье: https://a-parser.com/resources/130/

    Вот пример решения вашей задачи:

    Парсинг e-mail из страниц контактов - Пример парсинга контактов одним заданием с использованием $tools.query

    Узнать больше об этом ресурсе...
     
  3. Patrick

    Patrick A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    17 июл 2017
    Сообщения:
    5
    Симпатии:
    1
    Большое спасибо!

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

    Пытаюсь разобраться в том как пользоваться $tools.query, но пока выходит плохо. Перечитывал обзор инструмента $tools.query https://a-parser.com/resources/130/ и пробовал составять задания, но без положительных результатов.

    Может быть посоветуете что еще прочитать на эту тему, чтобы лучше понимать специфику?
     
  4. Kreola

    Kreola Member

    Регистрация:
    23 июн 2013
    Сообщения:
    203
    Симпатии:
    19
    Пользуюсь, хорошая штука.
    1) возможно есть такой же для получения телефонов?
    2) в данном пресете не хватает удаления дублей по емайлам, а зачастую их очень много.
    2017-09-26_22-13-31.jpg
     
  5. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Добрый день.
    Такого же нет, но вы легко можете поменять регулярку на нужную. Для телефонов ее сложнее составить, т.к. там нет общепринятого формата записи. Вот пример такой регулярки: https://a-parser.com/threads/2710/
    Ее легко добавить в пресет: https://a-parser.com/wiki/unique/
     
    Kreola нравится это.
  6. Kreola

    Kreola Member

    Регистрация:
    23 июн 2013
    Сообщения:
    203
    Симпатии:
    19
    Приветствую
    А как насчет такого варианта сбора? Рациональность?
    Прогонать список через google, формируя запрос для каждого домена: site:link.ru контакты
    берем первую ссылку которую google считает содержащей контакты и потом идем по ней.
     
  7. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Добрый день.
    Это легко реализуется двумя заданиями либо же одним с помощью JS парсеров.
    А насколько это рационально, вы сможете узнать, сделав такой парсер и оценив его работу.
     
    vipuncle нравится это.
  8. Kreola

    Kreola Member

    Регистрация:
    23 июн 2013
    Сообщения:
    203
    Симпатии:
    19
    Пожалуйста добавьте возможность к ссылкам добавлять id, а то когда сайтов много и надо работать со списками получается очень неудобно.
    т.е. link^1, link^2,link^3
    Хотел добавить сам, но понял что в JS не справлюсь.
     
  9. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Уточните, какие id, к каким ссылкам и на каком этапе нужно добавлять?
    JS в обсуждаемом пресете нету.
     
  10. Kreola

    Kreola Member

    Регистрация:
    23 июн 2013
    Сообщения:
    203
    Симпатии:
    19
    Мы говорим про пресет "Парсинг e-mail из страниц контактов 1.0", обсуждение почему то про сливание, про JS погорячился, имел ввиду js.tools
    хотелось бы чтоб можно было задавать произвольные данные к ссылкам
    т.е. у нас на входе сейчас так
    http://www.altium.com
    http://4pda.ru
    https://a-parser.com
    а хотелось бы примерно так
    1^какая-то информация1^http://www.altium.com
    2^какая-то информация2^http://4pda.ru
    3^какая-то информация3^https://a-parser.com
    не обязательно в такой последовательности
    Зачем это нужно? Потому что потом приходится сводить большие таблицы и это занимает очень много времени.
    Ну и на выходе получать такое
    1;какая-то информация1;http://www.altium.com;урл контакт страницы;title;emails;
    т.е. перед тем что есть просто добавить столбик с номером, который именно передается как параметр т.е. присутствует в query и данные какой-то информации
     
  11. Support

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

    Регистрация:
    16 мар 2012
    Сообщения:
    4.547
    Симпатии:
    2.164
    Пресет "Парсинг e-mail из страниц контактов" - это как раз и есть пример объединения нескольких заданий в одно с использованием $tools.query.

    $tools.js в данном пресете не используется.

    Это легко решается Конструктором запросов. Разделяйте запрос на части, передавайте через тот же разделитель данные на следующий уровень и выводите их вместе с результатами.
     

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