Um scraper para reviews do google maps, focado em hotéis. Este scraper utiliza a api interna reviewDialog, e não necessita de drivers interativos como o Selenium.
Para rodar sequencialmente:
python -m app run --path input/test.csv
Para rodar com múltiplas threads em paralelo:
python -m app run-async --path input/hotels.csv
O csv de input deve ser preenchido com os seguintes campos obrigatórios:
- done: Flag 0 ou 1 indicando se a linha já foi processada. Alterar manualmente.
- name: Nome arbitrário para o hotel/linha.
- n_reviews: Número de reviews a ser buscado. Pode exceder o máximo, pois, neste caso, o scraper irá parar automaticamente. Se o número for negativo, o scraper busca todos os reviews possíveis.
- sort_by: Tipo de ordenação. Opções disponíveis:
{"most_relevant", "newest", "highest_rating", "lowest_rating"}
- hl: Código de idioma. Representa o idioma base dos reviews buscados.
Atualmente o scraper dá suporte aos seguintes idiomas:
{"pt-br","en"}
- url: Url base para a busca.
Para obter o url, pesquise no google o nome do
hotel + maps, e encontre o link do google maps para o hotel.
Copie e cole o primeiro url que encontrar.
Esse url deverá conter o feature_id do lugar, representado por dois números
hexadecimais separados por dois pontos, como 0x0:0x6825759cc04b2504
. Exemplo: https://www.google.com/maps/place/Pousada+Itarar%C3%A9/@-23.9681059,-46.357305,15z/data=!4m2!3m1!1s0x0:0x6825759cc04b2504?sa=...
Demais campos nos arquivos de input não são obrigatórios, e não impactam na execução do scraper, servindo apenas de controle.
Para rodar no ambiente em nuvem Google Colab, acesse diretamente o Jupyter Notebook deste repositório no Colab.
Lembre-se de alterar o input e baixar os dados depois de rodar o scraper, pois o ambiente será reiniciado e os dados serão perdidos caso a aba não fique ativa por muito tempo.
Alternativamente, pode-se criar um novo notebook com os comandos a seguir:
- Clonando o repositório
!git clone https://github.com/brusangues/maps-reviews-api-scraper
- Entrando na pasta raiz do repositório
%cd maps-reviews-api-scraper
- Instalando pacotes
!pip install -r requirements.txt
- Rodando o scraper
!python -m app run-async --path input/test.csv
Para a instalação do python, recomendo a utilização do miniconda, para utilização de ambientes virtuais, como mostro no passo a passo abaixo.
- Instalação do miniconda
- https://docs.conda.io/en/latest/miniconda.html
- Utilizar primeiro instalador para windows, ou um instalador com versão python 3.9
- Durante a instalação, adicionar o miniconda ao path
- Teste da instalação do miniconda
- Se tiver terminais abertos, feche-os
- Abra um terminal (cmd)
- Teste o comando
conda -V
, que deve retornar algo do tipo:conda 4.10.3
- Criação do ambiente conda
- Em um terminal, mude para a pasta raiz deste repositório
- Crie o ambiente scraping com o comando
conda create -n scraping python=3.9
- Entre no ambiente com o comando
conda activate scraping
- Teste a instalação do python com o comando
python -V
, que deve retornar algo do tipo:Python 3.9.13
- Instalação dos pacotes do projeto
- Se já não estiver ativado, ative o ambiente com o comando
conda activate scraping
- Instale os pacotes usando o comando
pip install -r requirements.txt
- Se já não estiver ativado, ative o ambiente com o comando
- Teste toda a aplicação
- Se já não estiver ativado, ative o ambiente com o comando
conda activate scraping
- Utilize o comando para testar a aplicação
python -m app run --path input/test.csv
- Verifique os reviews raspados em
data/ano/mes/dia/*.csv
, com seus respectivos metadados emdata/ano/mes/dia/*.json
- Verifique o consolidado dos metadados em
data/places.csv
- Se já não estiver ativado, ative o ambiente com o comando