Кластеризатор запросов для SEO на Python

Делюсь своим пет проектом, задумывался как аналог https://coolakov.ru/tools/razbivka/ с большим лимитом для личного пользования. Я не разработчик поэтому сильно не кидайтесь) Основные функции мне написал ChatGPT (простите простите, на виси уже явно переизбыток его упоминаний). К сожалению после копипаста работали лишь некоторые куски кода и все пришлось дорабатывать руками со страданиями и гуглом.

Запросы объединяются на основании количества пересечений URL адресов, порог задается самим пользователем.

Ссылка на гит хаб - https://github.com/plxzm/seo-query-clusterizer
Ссылка на скачивание архивом (много весит) - https://wdfiles.ru/6d2abdf
Ссылка на архив без билда (только файлы пайтона) - https://wdfiles.ru/cd45fa7
Ссылка на вирустотал - https://www.virustotal.com/gui/file/a1d417e391e24ac25a52807d3c51e8c1d6bfba7f93560099e199d33dd18ea62d?nocache=1

В проекте три варианта программы
1. Без парсинга. Кластеризация осуществляет по предварительно собранной поисковой выдаче, содержащейся в файле data.xlsx (используются только первые 2 столбца). Возможна настройка глубины топа (ТОП10 и т.д.)
2. Парсинг с авто задержкой. Кластеризация осуществляется по ТОП10 выдаче Яндекс, без указания региона (подойдет для инфо запросов), задержка между запросами задается самим пользователем.
3. Парсинг с авто задержкой. Кластеризация осуществляется по ТОП10 выдаче Яндекс, без указания региона (подойдет для инфо запросов), задержка между запросами высчитывается на основании https://yandex.ru/dev/xml/doc/dg/concepts/rps-limits.html.

Использую по сути только первый, т.к. можно кластеризовать по разному топу и по выдаче гугл, поэтому распишу более подробно на примере первого варианта.

Скачиваем проект.

Предварительно по всем запросам необходимо собрать выдачу в эксель файл data.xlsx, который содержит в 1 столбце запросы, а во втором url (один, не пачку, это важно), пример:
vc.ru https://vc.ru/
vc.ru https://vk.com/vcru
vc.ru https://ru.wikipedia.org/wiki/Vc.ru
habr https://habr.com/ru/all/
habr https://m.habr.com/
habr https://vk.com/habr
и т.д.

Так не получится ( в будущем можно доработать):
vc.ru https://vc.ru/, https://vk.com/vcru, https://ru.wikipedia.org/wiki/Vc.ru
habr https://habr.com/ru/all/, https://m.habr.com/, https://vk.com/habr

Я использую https://seo-utils.ru/ (не реклама, правда), парсит он как раз в нужном формате, точнее под него я и делал кластеризатор. Указал его только потому что не смог осилить их API, это упростило бы жизнь, надеюсь кто-нибудь из умных людей мне поможет.

Должно получится как-то так

Кластеризатор запросов для SEO на Python

Кластеризатор берет значения только с первых двух столбцов, остальные не имеют значения.

Теперь у вас 2 варианта, использовать готовый exe файл из папки dist, либо запускать сам скрипт main.py. Если используете экзешник, то не забудьте кинуть data.xlsx в папке dist, потом просто запускаете main.exe. Если у вас установлен пайтон (проверял на 3.10) или вы не доверяете сборкам, то устанавливаем нужные библиотеки (можно запустив import_lib.bat) и запускаем сам скрипт main.py (можно через start.bat).

Вводим поочередно порог кластеризации и уровень топа

Кластеризатор запросов для SEO на Python

Затем немного ждем (в случае с вариантом парсинга с авто задержкой то не немного) и в папке, в которой запускали программу появится результат кластеризации output.xlsx.
Документ имеет три столбца: Запрос, Группа, Пересечения и выглядит так

Кластеризатор запросов для SEO на Python

Тут видна явная недоработка, если программа доходит до первого запроса для которого нет группы, то и не записывает для него пересечения url в 3 столбец( Решить это быстро и легко не получилось, возможно кто-нибудь поможет и в этом).

Теперь перейдем к примеру с парсингом. Можно было бы воспользоваться стандартным API от Яндекса, но это заняло бы больше времени. Я использовал готовую библиотеку https://github.com/dbf256/py-ya-xml , затем обнаружил существенный минус - нельзя указывать регион парсинга(( поэтому функционал довольно-таки ограничен, но можно использовать для инфо запросов.

В этом примере нужно подготовить запросы и сохранить их в файле queries.txt (по одному с новой строки).

Затем заполнить config.txt вписав свои LoginAPI и PassAPI указанные по ссылке https://xml.yandex.ru/settings/ (возможно потребуется подтвердить ip). Пример config.txt:

LoginAPI = trautmori
PassAPI = 03.1130000019240820:26e28a1321b425304e4512a7d1g4659a

(Данные вымышленные, не потирайте руки на мои лимиты 😅)
Если используете вариант с ручной задержкой, то нужно ее задать, записав цифру в секунда для Delay (тестил на небольшом количестве запросов, 2 секунды было достаточно). Будет подобное

Кластеризатор запросов для SEO на Python

Может быть чересчур подробно объясняю, простите если вы слишком умный.

Далее аналогично с примером выше.

Вариант с авто задержкой нужен при большом количестве запросов (если у вас столько лимитов вероятно вы вебмастер владыка). Получается очень долго, есть наитие, что лимит скорости от Яндекса можно немного ускорить, но подобными тестами не занимался. Можете поиграть с этой цифрой (чем больше, тем дольше)

Кластеризатор запросов для SEO на Python

Ссылка на гит хаб - https://github.com/plxzm/seo-query-clusterizer
Ссылка на скачивание архивом (много весит) - https://wdfiles.ru/6d2abdf
Ссылка на архив без билда (только файлы пайтона) - https://wdfiles.ru/cd45fa7
Ссылка на вирустотал - https://www.virustotal.com/gui/file/a1d417e391e24ac25a52807d3c51e8c1d6bfba7f93560099e199d33dd18ea62d?nocache=1

33
1 комментарий

Охуенная статья.
Пишите еще

Ответить