CoderCastrov logo
CoderCastrov
Парсер

Извлечение электронной почты, номеров телефонов и профилей в социальных сетях с веб-сайтов

Извлечение электронной почты, номеров телефонов и профилей в социальных сетях с веб-сайтов
просмотров
5 мин чтение
#Парсер

Узнайте, как автоматически извлекать электронную почту, номера телефонов и профили Facebook, Twitter, LinkedIn и Instagram с веб-страниц с помощью нового парсера на Apify, называемого Contact Information Scraper (vdrmota/contact-info-scraper). Примечание: опытные пользователи могут найти регулярные выражения, используемые для извлечения, в конце статьи.

Поиск контактной информации в Интернете может быть трудоемким. Если вам повезло, найти адрес электронной почты может быть делом нескольких кликов. Но что, если вы также хотите найти номера телефонов, страницы Facebook, профили LinkedIn, аккаунты Twitter и профили Instagram? Сегодня у каждого человека есть разные привычки в отношении своего онлайн-присутствия, поэтому связаться с кем-то часто означает найти все возможные способы связи с ними. Выполнение этой работы вручную - это кошмар, особенно если требуется проверить несколько веб-страниц или веб-сайтов. К счастью, вы можете автоматизировать эту работу с помощью техники, называемой парсингом, которая позволяет автоматически извлекать полезные данные с веб-сайтов.

Совет: Для лучшего понимания ценности генерации потенциальных клиентов прочитайте статью Использование парсинга для развития вашего двигателя роста в продажах и маркетинге

В Apify Store есть новый парсер под названием Contact Information Scraper (vdrmota/contact-info-scraper). Его задача - автоматически обходить веб-страницы, парсить контактную информацию с них и затем сохранять ее, чтобы вы могли скачать в формате Excel, CSV, JSON или в другом формате. Обратите внимание, что парсеры - это облачные программы, работающие на платформе Apify, которая является отличным инструментом для парсинга веб-сайтов, автоматизации и извлечения данных.

Прежде чем начать, вам нужно создать аккаунт Apify и подтвердить свой адрес электронной почты. Это займет всего несколько минут, и базовый аккаунт бесплатен, без необходимости предоставления номера кредитной карты. Бесплатный аккаунт имеет ограничения на использование, но они достаточны для обхода нескольких сотен веб-страниц.

Запуск актора

Чтобы начать, перейдите на страницу актора Contact Information Scraper и нажмите кнопку Use Actor.

Actor page

Вы будете перенаправлены в приложение Apify, где вы можете ввести настройки (конфигурацию ввода актора), такие как URL-адреса веб-сайтов. Вы можете ввести несколько URL-адресов веб-сайтов, и актор автоматически будет их парсить.

Совет: Недавно добавленная функция позволяет ограничить количество URL-адресов, которые будут обрабатываться на каждом домене. Теперь вы можете, например, загрузить 5000 доменов и ограничить 10 веб-страницами на каждом из них.

Как только вы будете готовы, нажмите кнопку Run.

Actor input configuration

Актор начнет работу, и вы увидите журнал, где можно отслеживать его прогресс. Во время работы актора вы можете просмотреть результаты, нажав на вкладку Dataset.

Output in the datasets

Вы можете скачать результаты в форматах, таких как Excel, CSV или JSON.

Или вы можете просмотреть результаты.

HTML dataset preview JSON dataset preview

В формате JSON результаты выглядят следующим образом:

Под вводом актора есть несколько параметров ввода, которые позволяют указать, какие страницы должны быть спарсены:

  • Start URLs - список URL-адресов веб-страниц, с которых должен начать работу парсер. Вы можете ввести несколько URL-адресов, текстовый файл с URL-адресами или даже документ Google Sheets.
  • Maximum link depth - указывает, насколько далеко от веб-страниц, указанных в Start URLs, должен перейти парсер. Если значение равно нулю, актор игнорирует ссылки и парсит только Start URLs.
  • Stay within the domain - если включено, актор будет следовать только по ссылкам, находящимся в том же домене, что и страница-источник. Например, если эта настройка включена и актор находит на странице http://www.example.com/some-page ссылку на http://www.another-domain.com/, он не будет парсить вторую страницу, так как www.example.com не совпадает с [www.another-domain.com](http://www.another-domain.com)

Обратите внимание, что актор принимает дополнительные параметры ввода для указания прокси-серверов, ограничения количества страниц и т. д. Подробнее см. в разделе Actor input.

Технология, лежащая в основе актера

Актер создан на Node.js и использует Apify SDK - библиотеку для парсинга и автоматизации веб-страниц. Полный исходный код актера доступен на GitHub.

При запуске актер загружает веб-страницы, указанные в Start URLs. Он делает это с помощью безголового браузера Chrome от Google, с использованием библиотеки Puppeteer. Через Puppeteer актер может имитировать пользовательские действия на веб-странице, такие как клики и прокрутка. Актер ищет ссылки на другие страницы на веб-сайте и рекурсивно их обходит, используя класс [PuppeteerCrawler](https://sdk.apify.com/docs/api/puppeteercrawler), предоставляемый Apify SDK.

После загрузки веб-страницы актер загружает исходный код HTML страницы. Используя безголовый Chrome, загруженный HTML представляет фактическое содержимое веб-страницы, которое пользователь видел бы, включая динамическое содержимое, загружаемое с помощью AJAX. Это позволяет актеру извлекать все контактные данные, как они представлены на страницах.

Для извлечения контактной информации из HTML актер использует мощь регулярных выражений. Ниже приведены несколько регулярных выражений, используемых для извлечения контактной информации из HTML (формат ECMAScript / JavaScript). Вы можете протестировать их на regex101.com. Обратите внимание, что все выражения предоставляются Social Utils в Apify SDK (см. исходный код).

Регулярное выражение для профилей LinkedIn

(?<!\\w)(?:http(?:s)?:\\/\\/)?(?:(?:[a-z]+\\.)?linkedin\\.com\\/in\\/)([a-z0–9\\-_%]{2,60})(?![a-z0–9\\-_%])(?:/)?

Выражение находит и извлекает URL-адреса профилей LinkedIn, такие как:

https://www.linkedin.com/in/alan-turing
en.linkedin.com/in/alan-turing
linkedin.com/in/alan-turing

Регулярное выражение для аккаунтов Twitter

(?<!\\w)(?:http(?:s)?:\\/\\/)?(?:www.)?(?:twitter.com)\\/(?!(?:oauth|account|tos|privacy|signup|home|hashtag|search|login|widgets|i|settings|start|share|intent|oct)(?:[\\'\\"\\?\\.\\/]|$))([a-z0-9_]{1,15})(?![a-z0-9_])(?:/)?

Выражение находит и извлекает URL-адреса профилей Twitter, такие как:

https://www.twitter.com/apify
twitter.com/apify

Регулярное выражение для профиля Facebook

(?<!\\w)(?:http(?:s)?:\\/\\/)?(?:www.)?(?:facebook.com|fb.com)\\/(?!(?:rsrc\\.php|apps|groups|events|l\\.php|friends|images|photo.php|chat|ajax|dyi|common|policies|login|recover|reg|help|security|messages|marketplace|pages|live|bookmarks|games|fundraisers|saved|gaming|salesgroups|jobs|people|ads|ad_campaign|weather|offers|recommendations|crisisresponse|onthisday|developers|settings|connect|business|plugins|intern|sharer)(?:[\\'\\"\\?\\.\\/]|$))(profile\\.php\\?id\\=[0-9]{3,20}|(?!profile\\.php)[a-z0-9\\.]{5,51})(?![a-z0-9\\.])(?:/)?

Данное выражение находит и извлекает URL-адреса профилей и страниц Facebook, такие как:

https://www.facebook.com/apifytech
facebook.com/apifytech
fb.com/apifytech
https://www.facebook.com/profile.php?id=123456789

Регулярное выражение для профилей Instagram

(?<!\\w)(?:http(?:s)?:\\/\\/)?(?:(?:www\\.)?(?:instagram\\.com|instagr\\.am)\\/)([a-z0–9_.]{2,30})(?![a-z0-9_.])(?:/)?

Выражение находит и извлекает URL-адреса профилей Instagram, такие как:

https://www.instagram.com/old_prague
www.instagram.com/old_prague/
instagr.am/old_prague

Если вам нужно иметь больше контроля над процессом парсинга и извлечения данных, вы можете форкнуть актора на GitHub и создать свою собственную версию. Подробнее см. в нашей документации по акторам.

И вот все, что вам нужно знать, чтобы начать использовать этот актор. Обязательно ознакомьтесь с другими акторами в Apify Store.

Счастливого парсинга контактной информации!