Поиск в яндексе из excel

Обновлено: 05.07.2024

Всем добрый день, вечер или утро. Прошу Вашей помощи в решении следующей задачи:
необходимо реализовать средствами VBA поиск данных в интернете и затем дальнейший их импорт, например, в книгу Excel.

Создать нечто подобное через веб-запрос пробовал, но появились некоторые затруднения. Дело в том, что это необходимо для заполнения каталога фильмов. Т.е. у меня есть только название фильма и нужно в интернете (а именно на сайте кинопоиск.ру) осуществить поиск фильма по названию и импортировать обратно в книгу данные о нем (год, жанр, режиссеры и т.п).

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

Помогите, пожалуйста, в решении данного вопроса.

Заранее Всем очень благодарен.

Это будет весьма непросто сделать.

Одно дело - запустить поиск по некой фразе, потом щелкнуть по первой ссылке в результатах, и скопировать оттуда нужные значения.
(и то весьма сложный код получится)

А что делать, если по запросу фильмы не найдены? (или найдено 1163 фильма, как по запросу "любовь")
Тут всё намного сложнее.

Сомневаюсь, что кто-то бесплатно предложит вам готовое решение.

П.С. Названия фильмов будут строго соответствовать оригиналу, так что в принципе тут будет только два варианта: либо фильм есть, либо нет (что маловероятно, т.к. фильмы в базе не самые новые)

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

Попробуем что-нибудь изобрести.

Я посмотрел - там разве на сайте поиск не сделан с помощью запроса в адресной строке? Тогда надо просто сделать функцию, которой передается название фильма, и она выдает HTML-код результата с сервера

Я что-то не понял.

Вот, к примеру, на листе ФИЛЬМ у вас 9 записей.
Для каждого фильма создавать отдельный лист РЕЗУЛЬТАТ?

Я-то думал, что в ту же таблицу (на листе ФИЛЬМ) надо добавить несколько столбцов (справа от названия фильма) - таких, как:
год
страна
слоган
режиссер
сценарий
продюсер

Сделал я вам всё-таки программу.


Процесс обработки отображается в строке состояния Excel.

Поисковые подсказки Яндекса — кладезь знаний для SEO-специалиста и специалиста по контекстной рекламе. Есть множество причин, почему они так востребованы:

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

    Режимы сбора подсказок

    С помощью !SEMTools для Excel можно собирать поисковые подсказки прямо на лист

    Есть три режима парсинга на выбор:

    • топ 10 по уже имеющемуся списку фраз
    • сбор одного большого списка для одной фразы в двух режимах
      • простом (1 символ)
      • расширенном (2 символа)

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

      Яндекс — топ 10 подсказок по имеющемуся списку

      Выделяем список фраз для обработки, и процедура подбирает к каждой из них все подсказки Яндекса в заданном регионе без добавления каких-либо символов.

      Собираем по 10 подсказок для каждой фразы, выбирая Волгоград в списке и задавая код Минска (157) вручную

      Яндекс — сбор всех поисковых подсказок по одной фразе

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

      Парсер геозависимых подсказок Яндекса в Excel

      Список геокодов для сбора подсказок

      Основные геокоды для сбора подсказок в ручном режиме перечислены ниже:

      Регион/ГородОкругID
      Москва и Московская областьЦентр1
      Центральный федеральный округЦентр3
      БелгородЦентр4
      ИвановоЦентр5
      КалугаЦентр6
      КостромаЦентр7
      КурскЦентр8
      ЛипецкЦентр9
      ОрёлЦентр10
      РязаньЦентр11
      СмоленскЦентр12
      ТамбовЦентр13
      ТверьЦентр14
      ТулаЦентр15
      ЯрославльЦентр16
      БрянскЦентр191
      ВладимирЦентр192
      ВоронежЦентр193
      МоскваЦентр213
      ДолгопрудныйЦентр214
      ДубнаЦентр215
      ЗеленоградЦентр216
      ПущиноЦентр217
      Белгородская областьЦентр10645
      Брянская областьЦентр10650
      АлександровЦентр10656
      Владимирская областьЦентр10658
      Гусь-ХрустальныйЦентр10661
      МуромЦентр10668
      Воронежская областьЦентр10672
      Ивановская областьЦентр10687
      Калужская областьЦентр10693
      Костромская областьЦентр10699
      Курская областьЦентр10705
      Липецкая областьЦентр10712
      Орловская областьЦентр10772
      Рязанская областьЦентр10776
      Смоленская областьЦентр10795
      Тамбовская областьЦентр10802
      Тверская областьЦентр10819
      Тульская областьЦентр10832
      Ярославская областьЦентр10841
      Санкт-ПетербургСеверо-Запад2
      ПетрозаводскСеверо-Запад18
      СыктывкарСеверо-Запад19
      АрхангельскСеверо-Запад20
      ВологдаСеверо-Запад21
      КалининградСеверо-Запад22
      МурманскСеверо-Запад23
      Великий НовгородСеверо-Запад24
      ПсковСеверо-Запад25
      Санкт-Петербург и Ленинградская областьСеверо-Запад10174
      Архангельская областьСеверо-Запад10842
      СеверодвинскСеверо-Запад10849
      Вологодская областьСеверо-Запад10853
      Калининградская областьСеверо-Запад10857
      Мурманская областьСеверо-Запад10897
      Новгородская областьСеверо-Запад10904
      Псковская областьСеверо-Запад10926
      Великие ЛукиСеверо-Запад10928
      Республика КарелияСеверо-Запад10933
      Республика КомиСеверо-Запад10939
      Южный федеральный округКавказ26
      МахачкалаКавказ28
      НальчикКавказ30
      ВладикавказКавказ33
      СтавропольКавказ36
      МайкопКавказ1093
      ЧеркесскКавказ1104
      ГрозныйКавказ1106
      Республика ДагестанКавказ11010
      Республика ИнгушетияКавказ11012
      Кабардино-Балкарская республикаКавказ11013
      Карачаево-Черкесская республикаКавказ11020
      Северная ОсетияКавказ11021
      Чеченская республикаКавказ11024
      ЕссентукиКавказ11057
      КисловодскКавказ11062
      Минеральные ВодыКавказ11063
      ПятигорскКавказ11067
      Ставропольский крайКавказ11069
      КраснодарЮг35
      АстраханьЮг37
      ВолгоградЮг38
      Ростов-на-ДонуЮг39
      НовочеркасскЮг238
      СочиЮг239
      НовороссийскЮг970
      ТаганрогЮг971
      ТуапсеЮг1058
      ЭлистаЮг1094
      АнапаЮг1107
      Астраханская областьЮг10946
      Волгоградская областьЮг10950
      АрмавирЮг10987
      ГеленджикЮг10990
      ЕйскЮг10993
      Краснодарский крайЮг10995
      Республика АдыгеяЮг11004
      Республика КалмыкияЮг11015
      Ростовская областьЮг11029
      ВолгодонскЮг11036
      Каменск-ШахтинскийЮг11043
      ШахтыЮг11053
      Приволжский федеральный округПоволжье40
      Йошкар-ОлаПоволжье41
      СаранскПоволжье42
      КазаньПоволжье43
      ИжевскПоволжье44
      ЧебоксарыПоволжье45
      КировПоволжье46
      Нижний НовгородПоволжье47
      ОренбургПоволжье48
      ПензаПоволжье49
      ПермьПоволжье50
      СамараПоволжье51
      УфаПоволжье172
      СаратовПоволжье194
      УльяновскПоволжье195
      Набережные ЧелныПоволжье236
      ТольяттиПоволжье240
      ДзержинскПоволжье972
      Кировская областьПоволжье11070
      Нижегородская областьПоволжье11079
      Оренбургская областьПоволжье11084
      Республика ТатарстанПоволжье11119
      Самарская областьПоволжье11131
      Саратовская областьПоволжье11146
      Удмуртская республикаПоволжье11148
      Ульяновская областьПоволжье11153
      Уральский федеральный округУрал52
      КурганУрал53
      ЕкатеринбургУрал54
      ТюменьУрал55
      ЧелябинскУрал56
      Ханты-МансийскУрал57
      СалехардУрал58
      МагнитогорскУрал235
      СургутУрал973
      НижневартовскУрал1091
      Курганская областьУрал11158
      Тюменская областьУрал11176
      Ханты-Мансийский автономный округУрал11193
      СнежинскУрал11218
      Челябинская областьУрал11225
      Ямало-Ненецкий автономный округУрал11232
      Сибирский Федеральный округСибирь59
      КрасноярскСибирь62
      ИркутскСибирь63
      КемеровоСибирь64
      НовосибирскСибирь65
      ОмскСибирь66
      ТомскСибирь67
      ТомскСибирь67
      ЧитаСибирь68
      БарнаулСибирь197
      Улан-УдэСибирь198
      НовокузнецкСибирь237
      БийскСибирь975
      БратскСибирь976
      АбаканСибирь1095
      Алтайский крайСибирь11235
      РубцовскСибирь11251
      Иркутская областьСибирь11266
      Кемеровская областьСибирь11282
      МеждуреченскСибирь11287
      ПрокопьевскСибирь11291
      АчинскСибирь11302
      Красноярский крайСибирь11309
      НорильскСибирь11311
      БердскСибирь11314
      Новосибирская областьСибирь11316
      Омская областьСибирь11318
      Горно-АлтайскСибирь11319
      Республика БурятияСибирь11330
      КызылСибирь11333
      Республика ХакасияСибирь11340
      Томская областьСибирь11353
      Дальневосточный федеральный округДальний Восток73
      ЯкутскДальний Восток74
      ВладивостокДальний Восток75
      ХабаровскДальний Восток76
      БлаговещенскДальний Восток77
      Петропавловск-КамчатскийДальний Восток78
      МагаданДальний Восток79
      Южно-СахалинскДальний Восток80
      НаходкаДальний Восток974
      Еврейская автономная областьДальний Восток10243
      Чукотский автономный округДальний Восток10251
      Амурская областьДальний Восток11375
      БиробиджанДальний Восток11393
      Камчатский крайДальний Восток11398
      Магаданская областьДальний Восток11403
      Приморский крайДальний Восток11409
      УссурийскДальний Восток11426
      Республика Саха (Якутия)Дальний Восток11443
      Сахалинская областьДальний Восток11450
      Комсомольск-на-АмуреДальний Восток11453
      Хабаровский крайДальний Восток11457
      АнадырьДальний Восток11458
      ЖелезногорскДальний Восток20086
      Забайкальский крайДальний Восток21949
      Основной список ID регионов Яндекса

      Если не нашли свой регион в списке, можно скачать полный список ID регионов яндекса. Ссылка на исследование, в рамках которого были собраны эти ID, проводил маркетолог Константин Добров.

      Смотрите также

      Парсинг подсказок Google, Youtube, Bing, Amazon. Работают похожим образом.

      Пошаговое руководство по работе с API Яндекса для непрограммистов

      Большинство рекламодателей и специалистов по настройке рекламы знают, зачем нужны Яндекс.Аудитории. Один из самых востребованных вариантов – сегменты на основе геолокации. Что может быть проще? Рисуете на карте полигоны или загружаете адреса, указываете радиусы и задаете условия взаимодействия людей с локациями. ⠀

      Через несколько часов аудитории готовы: они расскажут про ваш бизнес всем, кто подходит под критерии и пользуется интернетом. Но проходит время. Люди, входившие в аудитории, оказываются недоступны. Или вы получаете доступ к аудитории, созданной кем-то другим. И вот вы уже не помните и не понимаете, вокруг каких локаций и с какими условиями настроены аудитории, даже если они понятно названы. Знакомая ситуация?

      Возможности веб-интерфейса Яндекс.Аудиторий по работе с готовыми сегментами сильно ограничены. Максимум вы можете:

      • найти похожих пользователей,
      • поделиться сегментом с кем-нибудь,
      • придумать ему другое название,
      • удалить.

      Первые 3 действия требуют четкого понимания того, что именно содержится внутри. Поэтому ревизия давно забытых или чужих аудиторий нередко заканчивается действием 4 и созданием нового сегмента с названием, «по которому точно никогда не забуду, кто там находится».

      Вспоминаем все

      Есть рабочие варианты проверки того, что же находится внутри геолокации:

      1. зовете программиста, который покажет свой кунг-фу Python этому Яндексу;
      2. гуглите и пытаетесь сами во всем разобраться;
      3. повторяете за мной и пользуетесь стандартными инструментами специалистов по контекстной рекламе и интернет-маркетологов (например, Excel), а заодно повышаете свою квалификацию.

      Хотя мы будем работать напрямую с API Яндекса, никакие навыки программирования не понадобятся.Получить координаты точек из аудитории можно в Excel, но интереснее увидеть их на карте, поэтому предлагаю воспользоваться Power BI. Он покажет их прямо на дашборде (в Excel все аналогично, но о нем – в самом конце).

      Устанавливаем Power BI

      Шаг 1. Получаем токен для доступа к API Яндекса

      Токен – это своего рода пароль, который помогает API Яндекса вас узнавать и отвечать на запросы вашей программы, предоставляя нужные данные. Чтобы его получить, нужно зарегистрировать новое приложение по этой инструкции или воспользоваться моей ссылкой для получения токена.

      Но где же моя ссылка? Хочу предупредить: полученный по ссылке токен категорически не рекомендуется давать никому, даже мне. Его обладатель получит доступ к чтению статистики и изменению Яндекс.Метрики, Яндекс.Аудиторий и Яндекс.Директа.

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

      Зарегистрируйте собственное предложение (на самом деле это просто) или пройдите по этой ссылке на страницу авторизации Яндекса.

      Убедитесь, что вы залогинены в нужном аккаунте, и разрешите доступ к нему для приложения Power BI connector.

      После нажатия на большую желтую кнопку вы увидите токен.

      Пока не закрывайте эту страницу!

      Шаг 2. Находим полный список аудиторий

      Запустите Power BI.

      1. Нажмите нижнюю часть кнопки Get data («Получить данные»), чтобы открыть меню часто используемых источников данных.
      2. В нижней части меню выберите пункт Blank query.

      Откроется редактор Power Query.

      token = "", // вставьте свой токен между двойными кавычками

      Headers = header // заголовки запроса

      getFieldNames = (rec as any) => let

      names = List.Transform(rec, Record.FieldNames),

      if Value.Is(rec, type record)

      Получится примерно следующее:

      Теперь во вторую строку (token = “”) вставьте полученный токен между двойными кавычками и нажмите Done. Вы увидите таблицу с сегментами Яндекс.Аудиторий, к которым есть доступ у аккаунта с этим токеном.

      Шаг 3. Достаем нужное и отсекаем лишнее

      Среди вас наверняка найдутся те, кому не нужно объяснять, что делать дальше. Поэтому рассказываю тем, кто редко или неуверенно пользуется Power BI. Остальные могут воспринимать этот текст как совет, а не руководство к действию.

      Для начала выберите в списке аудитории, созданные из геосегментов.

      Убедитесь, что в колонке status остались только строки со статусом processed (готовые). Если это не так, отфильтруйте колонку status точно так же, как только что фильтровали колонку type. Картинка без комментариев:

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

      1. Нажмите на кнопку Manage Columns.
      2. Выберите пункт Choose Columns.
      3. В открывшемся списке оставьте только колонки name и points.

      У вас останется таблица из двух колонок: name – название аудитории из интерфейса Яндекс.Аудиторий, points – список географических координат точек внутри нее.

      1. Снова нажмите расходящиеся в разные стороны стрелки в правой части заголовка колонки points. Появится меню извлечения элементов из записи.
      2. Просто нажмите OК.
      3. Вы увидите 2 новые колонки: с географической широтой и долготой.
      4. Теперь поменяйте тип данных в таблице:Переключитесь на вкладку Transform («Преобразования») и выделите все колонки, кликая по их заголовкам с зажатой кнопкой Shift (или нажмите Ctrl+A).
      5. Нажмите Detect Data Type («Определить тип данных»).

      Данные готовы для загрузки в модель.

      Вернитесь на вкладку Home.

      1. Нажмите Close & Apply («Закрыть и применить»).
      2. Окно Power Query Editor автоматически закроется, данные начнут загружаться в модель.

      Шаг 4. Рисуем карту

      Вернитесь в Power BI Desktop.

      На панели Visualizations («Диаграммы») щелкните по диаграмме Map («Карта») с изображением глобуса.

      На рабочей области появится заглушка карты, на месте которой появится сама карта.

      1. Справа на панели Fields появятся загруженные данные с названиями колонок. Схватите мышкой колонку points.latitude и перетащите ее в поле Latitude («Широта») на панели Visualizations. Если в Visualizations не видите Latitude, то выберите заглушку карты щелчком мыши, и поле появится.
      2. Повторите действие, перетащив мышкой points.longitude в поле Longitude («Долгота»).

      Вы увидите карту с точками:

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

      Срезы (слайсеры)

      Схватите мышкой название колонки name и перетащите его в любое свободное место на рабочей области.Как только вы отпустите мышку, Power BI создаст новую диаграмму Table («Таблица») со списком аудиторий.

      Не снимая выделения с таблицы аудиторий, щелкните мышкой по кнопке Slicer («Срезы») на панели Visualizations.

      Теперь можете щелкать по названиям нужных аудиторий, и на карте будут отображаться только координаты принадлежащих им точек.

      Больше не нужно гадать!

      Шаг 5. Работаем в Excel

      Шаги 2 и 3 можно сделать в Excel начиная с 2016-й версии (вообще можно с 2012-й, но понадобится что-то установить – гугл в помощь).Мне не нужно заново повторять эти шаги, поэтому просто копирую все, что сделал в Power BI. Сначала в Power BI нажимаю кнопку Transform data («Преобразовать данные»).

      Открывается уже знакомый редактор запросов Power Query Editor, где:

      1. Выбираю нужный запрос.
      2. Захожу в расширенный редактор.
      3. Копирую весь имеющийся там код в буфер обмена.

      Показываю на примере Excel 2019 для Windows.

      1. Переключитесь на вкладку «Данные».
      2. Нажмите «Получить данные» для открытия контекстного меню.
      3. Выберите группу «Из других источников».
      4. Выберите пункт «Пустой запрос».

      Откроется редактор Power Query.

      1. Нажмите «Расширенный редактор».
      2. Замените код в окне расширенного редактора на скопированный из Power BI или из начала статьи.
      3. Нажмите «Готово».

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

      1. Нажмите «Изменить учетные данные», появится окно «Доступ к веб-содержимому».
      2. Нажмите «Подключение».

      Появится таблица, аналогичная таблице в Power Query. Нажмите «Закрыть и загрузить», и данные загрузятся на лист.

      Что делать с ними в Excel? Можно добавлять в каждую аудиторию по одной точке и получить сервис прямого геокодирования, где адрес превращается в географические координаты (но есть и более удобные инструменты, о которых можем поговорить потом).

      На самом деле в Excel можно делать почти все то же самое, что и в Power BI. Например, напрямую работать с API Яндекса. Сегодня мы научились загружать аудитории, но можно и подключиться к Яндекс.Метрике или получить статистику из Яндекс.Директ.

      Заключение

      Надеюсь, статья была полезна, и вы узнали новые способы работы с данными. Задавайте вопросы в комментариях! И пишите, что еще хотите узнать.


      Новая версия макроса для Excel (VBA) для быстрого и удобного получения гео-координат/адресов из Yandex и Google. В качестве исходных данных на листе указывается список адресов (для получения координат) или список координат (для обратного геокодирования). Результаты запроса будут выведены в соседние ячейки.

      Подробное описание

      Некоторое время назад на сайте был опубликован макрос для получения координат из Yandex.
      Несмотря на небольшой размер своего кода, макрос в удобном режиме позволяет по заданному списку адресов получать их geo-координаты (широту и долготу).

      В текущей статье публикуем новый (доработанный) макрос для работы с координатами и адресами.

      Изменения в новом макросе:

      1. Макрос может работать с API Яндекса и Гугла.
        Для работы с сервисом Яндекса используйте лист "yandex", для работы с Гуглом - лист "google". Предыдущая версия работала только с Яндекс.
      2. Из кода макроса исключен параметр KEY.
        Это значит, что теперь не нужно получать ключ разработчика для корректной работы макроса. Теперь всё работает без KEY. Разумеется, общие ограничения сервисов по прежнему имеют место - это около 25 000 запросов в сутки с одного IP. При необходимости узнать более подробно о действующих ограничениях, следуйте по ссылкам: лимиты для яндекса, лимиты для гугл.
      3. Добавлена возможность обратного геокодирования (определение адреса по долготе и широте).
        Для работы с обратным геокодированием необходимо соблюдать несколько важных нюансов, касающихся формата записи строки с координатами:
        - для Yandex координаты необходимо указывать в формате (через запятую, без пробелов): долгота,широта
        - для Google координаты необходимо указывать в формате (через запятую, без пробелов): широта,долгота
        В приложенном файле с макросом на соответствующих листах есть примеры как для Yandex, так и для Google.
      4. Добавлена статистика по количеству обработанных строк.
        Статистика начинает отображаться после запуска макроса. Наблюдать статистику можно в строке статус бара Excel.
      5. Типы переменных для работы с XML переименованы в Object.
        В предыдущей версии макроса типы были строго заданы как MSXML2.DOMDocument и MSXML2.IXMLDOMNodeList. Как следствие, возникали ошибки в процессе работы, если на ПК пользователя не было соответствующих библиотек "Microsoft XML".

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

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

      Для работы с макросом предварительно необходимо получить API-ключ для Yandex/Google. Видео с инструкцией, как подключить нужный API Yandex, можно посмотреть по ссылке.
      Соответствующее значения API-ключа указывается на листе "Настройки".
      В целом, для Yandex принципиально ничего не изменилось, а вот у Google с августа 2018 г. действуют новые условия получения API (необходимо регистрировать аккаунт Google Cloud Platform и привязывать к нему свою б/карту; после данных настроек суточный бесплатный лимит по-прежнему работает).

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

      Читайте также: