Pular para o conteúdo principal

Maps::Yandex - Scraper do Yandex Maps

img

Visão geral do scraper

O scraper do Yandex Maps coleta dados de contato de organizações.

A funcionalidade do A-Parser permite salvar configurações de extração de dados para uso posterior (presets), definir cronogramas de extração de dados e muito mais. Você pode usar a multiplicação automática de consultas, substituição de subconsultas de arquivos, geração de combinações alfanuméricas e listas para obter o máximo possível de resultados.

A preservação dos resultados é possível na forma e estrutura que você necessita, graças ao poderoso motor de modelos integrado Template Toolkit que permite aplicar lógica adicional aos resultados e exibir dados em vários formatos, incluindo JSON, SQL e CSV.

Dados coletados

  • Nome da organização
  • Endereço e coordenadas
  • Avaliação, número de comentários e política de preços
  • Categorias e tags
  • Site, redes sociais e telefones
  • Link para foto e logotipo
  • Descrição
  • Link para a página da organização no Yandex Maps
  • Informações sobre o horário de funcionamento do estabelecimento

Recursos

  • É obrigatório especificar as coordenadas e o zoom da área onde a pesquisa é realizada
  • Capacidade de definir o número de páginas para a coleta de dados
  • Capacidade de especificar o idioma dos resultados
  • Capacidade de usar antigate para contornar captchas

Casos de uso

  • Coleta de uma lista de organizações presentes em uma área específica
  • Obtenção de contatos de organizações
  • Quaisquer outros casos que envolvam a busca de organizações em mapas

Consultas

Como consultas, você deve especificar palavras-chave, exatamente como se as estivesse digitando diretamente no formulário de pesquisa do Yandex Maps, por exemplo:

pizza

Exemplos de formatos de saída

O A-Parser suporta formatação flexível de resultados graças ao motor de modelos integrado Template Toolkit, o que permite exibir resultados em forma livre, bem como estruturada, como CSV ou JSON

Saída padrão

Formato do resultado:

$serp.format('$name ($rating): $address\n')

Como resultado, é exibida uma lista de organizações, suas avaliações e endereços:

Pirogi № 1 (4.9): Russia, Moscou, ulitsa Bolshiye Kamenshchiki, 9, str. B
Einstein lounge (4.8): Russia, Moscou, Taganskaya ulitsa, 29, str. 1
Gusto (4.1): Russia, Moscou, ulitsa Bolshaya Dmitrovka, 7/5s1
Friends (4.4): Russia, Moscou, Krasnobogatyrskaya ulitsa, 90, str. 2
Shisha City (4.4): Russia, Moscou, Vorontsovskaya ulitsa, 6, str. 7
Jacks (4.4): Russia, Moscou, 1-ya Frezernaya ulitsa, 2/1s10
Restaurante Guilty Pleasure (4.3): Russia, Moscou, Oruzheynyy pereulok, 15A
White Fox (4.3): Russia, Moscou, Bolshoy Drovyanoy pereulok, 6

Saída de todos os dados de contato

Formato do resultado:

$serp.format('$name ($rating): $address, $reviews, $price, $categories, $tags, $site, $phones, $photo, $coordinates, $social, $logo, $description, $link\n')

Exemplo de resultado:

Pirogi № 1 (4.9): Russia, Moscou, ulitsa Bolshiye Kamenshchiki, 9, str. B, 256, , Entrega de comida, Pizzarias, Padarias, entrega gratuita, pagamento com cartão, entrega de produtos, entrega de comida, https://piroginomerodin.ru/, +7 (499) 642-32-71, +7 (495) 127-78-47, https://avatars.mds.yandex.net/get-altay/4489303/2a000001787d1771aebf8b4b849d986caea1/XXXL, 37.65577,55.738421, https://vk.com/piroginomerodin, https://www.instagram.com/piroginomerodin/, https://avatars.mds.yandex.net/get-tycoon/474201/2a0000016dd037b101f0cd4ad3968416440e/priority-headline-logo, , https://yandex.ru/maps/org/105121172016/
Einstein lounge (4.8): Russia, Moscou, Taganskaya ulitsa, 29, str. 1, 153, 900–1500 ₽, Hookah bars, Bares, pubs, Jogos intelectuais, jogos de tabuleiro, terraço de verão, pagamento com cartão, almoço executivo, projetor, Wi-Fi, transmissões esportivas, , +7 (968) 068-99-09, https://avatars.mds.yandex.net/get-altay/2419289/2a000001748889d4246610a4f452790b8eee/XXXL, 37.668036,55.739651, https://www.instagram.com/einstein_lounge/, https://avatars.mds.yandex.net/get-tycoon/1635364/2a00000170a408e3bda96d25bf44857eed75/priority-headline-logo, , https://yandex.ru/maps/org/127811263445/
Gusto (4.1): Russia, Moscou, ulitsa Bolshaya Dmitrovka, 7/5s1, 133, 1500–1700 ₽, Restaurantes, Pizzarias, almoço executivo, Wi-Fi, café para viagem, comida para levar, terraço de verão, pagamento com cartão, transmissões esportivas, http://www.gusto-moscow.ru/, +7 (495) 650-69-22, https://avatars.mds.yandex.net/get-altay/2887807/2a0000017357f4fe86d86cd5d3e300855b86/XXXL, 37.614142,55.760285, https://www.facebook.com/pages/gusto-итальянская-кухня/300193353486996, https://www.instagram.com/gusto.rest/, , , https://yandex.ru/maps/org/1080982853/
Shisha City (4.4): Russia, Moscou, Vorontsovskaya ulitsa, 6, str. 7, 68, 900–1200 ₽, Hookah bars, Bares, pubs, Anticafé, jogos de tabuleiro, estacionamento para deficientes, pagamento com cartão, cerveja artesanal, Pré-venda online, Wi-Fi, transmissões esportivas, http://www.shishataganka.ru/, +7 (958) 100-62-71, https://avatars.mds.yandex.net/get-altay/212783/2a0000015d991abf6d89fa812daac5491c4f/XXXL, 37.654414,55.739423, https://vk.com/shishacitytaganka, https://www.facebook.com/shishacitytaganka, https://www.instagram.com/shishacitytaganka, https://avatars.mds.yandex.net/get-tycoon/479792/2a000001746e2044d0177e25adeba8e943ac/priority-headline-logo, , https://yandex.ru/maps/org/1695943598/

Saída em tabela CSV

Formato do resultado:

[% FOREACH serp; 
tools.CSVline(name, rating, address, reviews, price);
END %]

Exemplo de resultado:

"Pirogi № 1",4.9,"Russia, Moscou, ulitsa Bolshiye Kamenshchiki, 9, str. B",256,
"Einstein lounge",4.8,"Russia, Moscou, Taganskaya ulitsa, 29, str. 1",153,"900–1500 ₽"
Gusto,4.1,"Russia, Moscou, ulitsa Bolshaya Dmitrovka, 7/5s1",134,"1500–1700 ₽"
"Shisha City",4.4,"Russia, Moscou, Vorontsovskaya ulitsa, 6, str. 7",68,"900–1200 ₽"
"Kalyannaya Kult Game",4.5,"Russia, Moscou, ulitsa Shabolovka, 2",66,"1200–1500 ₽"

Dump de resultados em JSON

Formato geral do resultado:

[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;

obj = {};
obj.query = query;
obj.serp = [];

FOREACH item IN p1.serp;
obj.serp.push({
name = item.name
rating = item.rating
address = item.address
phones = item.phones
});
END;

obj.json %]

Texto inicial:

[

Texto final:

]

Exemplo de resultado:

[{
"query": "pizza",
"serp": [
{
"name": "Pirogi № 1",
"address": "Russia, Moscou, ulitsa Bolshiye Kamenshchiki, 9, str. B",
"phones": "+7 (499) 642-32-71, +7 (495) 127-78-47",
"rating": "4.9"
},
{
"name": "Einstein lounge",
"address": "Russia, Moscou, Taganskaya ulitsa, 29, str. 1",
"phones": "+7 (968) 068-99-09",
"rating": "4.8"
},
{
"name": "Gusto",
"address": "Russia, Moscou, ulitsa Bolshaya Dmitrovka, 7/5s1",
"phones": "+7 (495) 650-69-22",
"rating": "4.1"
},
]
}]
dica

Para que as opções "Prepend text" e "Append text" estejam disponíveis no Editor de tarefas, é necessário ativar "More options".

Configurações possíveis

ParâmetroValor padrãoDescrição
Coordinates37.6572693,55.780844Coordenadas da área de busca, parâmetro obrigatório — longitude, latitude, como no URL (ll=), e não como ao copiar coordenadas pelo botão no mapa
Zoom11Zoom, parâmetro obrigatório
Pages count5Número de páginas
LanguageEnglishSeleção do idioma dos resultados
AntiGate presetdefaultPreset pré-configurado do scraper Util::AntiGateUtil::AntiGate