Парсинг тематических доменов по ключевой фразе из Google и получение различных параметров по доменам

Парсинг тематических доменов по ключевой фразе из Google и получение различных параметров по доменам

Минимальная версия A-Parser
1.2
Cтатья - это краткий пересказ видео, кому как удобнее воспринимать материал.


В данной статье будем собирать тематические домены по ключевой фразе (для примера возьмем "essay writing") из поисковой выдачи Google, будем парсить не ТОП 1000, а гораздо больше при помощи буквенных подстановок к запросу. Потом будем получать для доменов различные параметры:
  • зарегистрирован домен или нет
  • дата регистрации и дата окончания регистрации домена
  • язык сайта
  • title и description
  • индекс качества сайта
  • позицию в глобальном рейтинге Alexa
  • cтрану с наибольшим числом трафика по Alexa
  • позицию в рейтинге этой страны по Alexa
Аналогичным способом можно парсить сайты по любой тематике (товары, медикаменты, кредиты и прочее) или например, можно будет определить дропов, по ключам выпарсить домены, посмотреть по whois какие домены свободны и получить еще дополнительные метрики-пузомерки для них.

По нашему запросу получили 240 226 доменов через макросы подстановок к запросу {az:a:zzz}, но можно поставить {az:a:zzzz} что гораздо больше, а также есть возможность добавить много других вариантов подстановок (например, {num:1:100000} и {az:а:яяя}).

2020-01-17_16-55-46.png


Скорость парсинга Google при наличии проксей A-Parser, при 100 потоках в среднем 160 запросов в минуту на момент написания статьи, в целом скорость может меняться как в большую, так и в меньшую стороны.

При использовании проксей nosok.org в 1000 потоков скорость в среднем будет больше 3000 запросов в минуту (скрин ниже).

1k93u_200120142021.png


1. Настраиваем первый пресет. В нем будем парсить поисковую систему Google. Выбираем парсер SE::Google SE::Google.

Выбираем опцию Request retries (эта опция отвечает за количество повторных запросов, если прокси забанен или не работает). Устанавливаем значение, например 1000. Чем больше значение тем больше вероятность, что найдется рабочий прокси.

szv1q_200117203128.png


Выбираем опцию Pages count и Links per page (которые означают соответственно кол-во страниц и результатов на странице в поисковой выдаче). Так как нужно собрать максимум результатов, то устанавливаем 10 страниц и 100 результатов на странице.

f4nx9_200119083237.png


hzhrj_200119083440.png


Выбираем опцию Добавить уникализацию, будет происходить уникализация на выбранном результате. Устанавливаем в выпадающем списке переменную:
Код:
$serp.link
(массив serp, link - ссылки из результата выдачи) и ТИП уникальности - Домен верхнего уровня (Уникализация будет идти по главному домену с учетом региональных, коммерческих, образовательных и прочих доменов, без учета поддоменов). Переключатель "Глобально" не устанавливаем, так как используется всего 1 парсер в данном случае. Подробнее про опцию уникальности можно прочитать в документации.

zlj0v_200119084444.png


Нажимаем на кнопку Конструктор результатов. Выбираем переменную:
Код:
$p1.serp.$i.link - Link
p1 - это парсер первый, массив serp, линк - ссылки из результата выдачи Google. Тип устанавливаем Extract Domain (Выделение домена из ссылки), массив и значение соответственно установятся по умолчанию, но если необходимо, то их можно изменить.

wn0p8_200119085846.png


Значение Формат результата оставляем p1.preset.

Запрос размножаем при помощи макросов подстановок. Так как поисковые системы обычно не дают получить 1000 результатов из выдачи, в зависимости от запросов. К запросу добавляем:
Код:
{az:a:zzz}

3i5ze_200119091143.png


В разделе Результаты пишем имя файла, куда будут сохраняться результаты.

vmk04_200119091516.png


Сохраняем пресет.

Запустим задание и пока оно работает будем составлять настройки второго задания.

2. Настраиваем второй пресет. Будем собирать параметры по доменам из доступных готовых парсеров.

Выбираем парсер Net::Whois Net::Whois и при помощи него собираем такие параметры как:
  • зарегистрирован домен или нет - переменная $registered
  • дата регистрации - переменная $creation_date
  • дата окончания регистрации домена - переменная $expire_date
Код:
$registered
$creation_date
$expire_date


dyn28_200119092312.png


Так как используем прокси, то выбираем опцию Request retries (Количество повторных запросов), устанавливаем значение 20. Так как серверы для определенных доменных зон не будут работать (их много, какие то ломаются периодически), а если будет значение например 1000, то скорость парсинга будет очень маленькая.

Чтобы добавить еще парсеры в пресет необходимо нажать на кнопку Добавить парсер.

Выбираем парсер HTML::TextExtractor::LangDetect HTML::TextExtractor::LangDetect. Данным парсером будем получать язык сайта (например, русский, английский и т.д.), переменная:
Код:
$lang


x1tmk_200119093334.png


Так как в качестве запросов у нас будут домены без протоколов, а для данного парсера нужны домены с протоколами, то к нему добавляем опцию Query format и в значение пишем
Код:
http://$query
Теперь для этого парсера запросы будут с протоколом http://, если у какого то из доменов протокол https://, то будет происходить редирект.

aa9sh_200119094654.png


tceur_200119100735.png


Добавляем третий парсер Net::HTTP Net::HTTP. Этим парсером будем при помощи регулярных выражений получать с сайтов title и description.

Как и в предыдущем парсере добавляем опцию Query format и в значение пишем
Код:
http://$query

Выбираем функцию Использовать регулярку и применяем к переменной
Код:
$data
Пишем регулярное выражение для сбора title
Код:
<title>(.*?)</title>
Флаг выбираем is, тип результата указываем Простой и присваиваем переменную title для данного результата.

Проделываем тоже самое для получения description, пишем регулярное выражение:
Код:
<meta\s+name\s*=\s*['"]description['"]\s+content\s*=\s*(['"])(.*?)\1


wsawi_200119102615.png


Добавляем четвертый парсер SE::Yandex::SQI SE::Yandex::SQI, при помощи него определяем индекс качества сайта в Яндексе. Переменную будем использовать для получения индекса качества сайта:
Код:
$sqi


pru4w_200119104015.png


Добавляем пятый парсер Rank::Alexa Rank::Alexa. Данным парсером получим следующие параметры:
  • Позицию в глобальном рейтинге Алексы - переменная $rank,
  • Страну с наибольшим числом трафика - переменная $country,
  • Позицию в рейтинге этой страны - переменная $countryrank.
Код:
$rank
$country
$countryrank

Чтобы вывести все результаты в таблицу формата CSV, необходимо воспользоваться инструментом форматирования CSV таблиц (которые можно легко импортировать в Excel или Google Sheet) $tools.CSVline (инструменты, которые доступны при использовании шаблонизатора). Внутри скобок перечислим запрос и переменные парсеров, значения которые хотим увидеть в результате:
Код:
[% tools.CSVline(query, p1.registered, p1.creation_date, p1.expire_date, p2.lang, p3.title, p3.description, p4.sqi, p5.rank, p5.country, p5.countryrank) %]


1ljra_200119110139.png


В качестве запроса указываем файл с результатом работы первого пресета по сбору доменов.

Добавляем имя файла результата, например domain-parametr, так же меняем формат файла с .txt на .csv .

dxtv3_200120140558.png


Сохраняем пресет. Указываем в качестве запросов файл с результатом работы первого задания и запускаем задание нажав на кнопку Добавить задание.

Мы получили следующий результат:

2020-01-20_14-51-09.png


Возможны следующие варианты для расширения пресета, например:
  1. узнать движок сайта
  2. запросить в Google количество страниц в индексе
  3. узнать первое и последнее появления в веб-архиве
  4. проверить наличие в роскомназдоре
  5. и многое другое (так как возможности парсера безграничны).
Скачать второй пресет - https://a-parser.com/resources/372/
Автор
Support Alex
Просмотры
211
Первый выпуск
Обновление

Рейтинги

5,00 звёзд Оценок: 8

Ещё ресурсы от Support Alex

Назад
Верх