Git Product home page Git Product logo

olx-monitor's Introduction

OLX Monitor

OLX Monitor

Estava procurando um produto específico no OLX, e diariamente acessava minhas buscas salvas no aplicativo à procura de uma boa oportunidade. Um dia encontrei uma ótima oportunidade, mas quando entrei em contato com o vendedor já era tarde, ele já estava indo ao encontro do comprador e caso a a venda não desse certo tinham mais 3 pessoas na espera para comprar.

Vi nessa situação uma oportunidade para aprender um pouco sobre scrapping usando o nodejs para tentar não perder uma próxima oportunidade. Espero que você também consiga o mesmo.

Instalação e configuração

Para utilizar esse script você precisa ter o node e o npm devidamente instalados, ter uma conta no Telegram, e idealmente um computador que fique ligado 27/7 para executar o script continuamente. Eu usei um Raspberry Pi 2 que consome pouca energia e já uso para outros fins, mas você pode usar um VPS, ou um sevidor gratuito da Oracle.

Se você já está familiarizado com a API do Telegram e já mexeu bom bots segue um passo-a-passo mais enxuto:

  1. Clonar ou fazer download do repositório git clone https://github.com/carmolim/olx-monitor.git
  2. Instalar as dependências com o comando npm install
  3. Renomear o arquivo example.env para .env e incluir as informações do seu BOT e do seu grupo que irá receber as notificações
  4. Incluir as URLs que você quer que sejam monitoradas no arquivo config.js
  5. Definir qual o intervalo que você quer que as buscas sejam feitas no arquivo config.js
  6. Executar o script usando o comando node index.js
  7. Acompanhar o andamento do script no Terminal
  8. Se correu tudo certo, dois novos arquivos foram criados o ads.db que é o banco de dados e o scrapper.log com os logs de execução do script

Configuração do Telegram

Para você poder receber as notificações pelo Telegram você precisa ter algumas coisas, um bot que terá um token e um grupo que tenho bot com que você irá criar como participante.

Criar seu bot

Para conseguir o seu token você precisa criar o seu próprio bot. Eu pretendo fazer um tutorial, mas enquanto isso você pode usar esse aqui. O vídeo é longo mas você só precisa assistir até: 3:24. Com esse vídeo você irá conseguir obter o seu token.

Descobrindo seu CHAT ID

Depois de criar o seu bot, crie um grupo e convite o seu bot que você acabou de criar e també um outro bot, o @idbot, ele vai te ajudar a descobrir o CHAT_ID que precisamos para enviar a notificação.

Depois de incluir o no grupo, basta digitar /getgroupid@myidbot e bot irá responder com o ID do chat.

Editando seu ambiênte

Dentro do repositório tem um arquivo chamado example.env, você precisa renomea-lo para apenas .env e preencher as informações que você acabou de pegar.

Variável Exemplo
TELEGRAM_TOKEN Token do seu bot gerado pelo BotFather
TELEGRAM_CHAT_ID ID do seu chat

O que deve ser monitorado?

Eu não sei o que você está procurando no OLX, mas você precisa dizer para o script. A forma mais fácil de fazer isso é entrar no site do OLX, fazer uma busca, colocar os filtros que você acha necessário e copiar o endereço que o OLX vai criar.

Recomendo utilizar filtros bem específicos para não gerar resultados com muitos itens. Como esse script irá varrer todos os resultados encontrados, pode ser possível que não seja possível passar por todos os resultados dentro do intervalo definido, isso pode fazer com que o Olx perceba uma quantidade alta de chamadas do seu IP e faça algum bloqueio. Isso nunca me aconteceu, mas pode acontecer.

Você pode utilizar uma ou mais pesquisas, basta apenas incluir as URLs no arquivo config.js dentro da variável URLs

Exemplos

Apenas uma URL
config.urls = ['https://sp.olx.com.br/sao-paulo-e-regiao/centro/celulares/iphone?cond=1&cond=2&pe=1600&ps=600&q=iphone']
Várias URLs

Para usar várias URLs você só precisa separa-las por vírgula.

config.urls = [
    'https://sp.olx.com.br/sao-paulo-e-regiao/centro/celulares/iphone?cond=1&cond=2&pe=1600&ps=600&q=iphone',
    'https://sp.olx.com.br/sao-paulo-e-regiao/imoveis/venda?bae=2&bas=1&gsp=1&pe=600000&ps=100000&se=6&ss=2',
]

Dica

Quando mais específica sua busca for mais eficiente o script será, se você só buscar por iPhone, no Brasil todo, você vai receber muitas notificações por dia, não vai ser muito legal.

Executando o script

Agora você já está com tudo configurado, e se você seguiu todos os passos corretamente, basta acessar Terminal na pasta onde você configurou o script e roda o comando node index.js

Você poderá acompanhar o funcionamento do script pelo terminal e se tudo funcionar você irá reparar que dois novos arquivos apareceram dentro da sua pasta, o arquivo ads.db que é o banco de dados e o scrapper.log onde você pode acompanhar o registro do que aconteceu em cada execução do script.

Funcionamento

O funcionamamento do script é simples. Ele percorre um array de URLs copiadas do OLX, que já contém os filtros de preço mínimo, máximo e etc, encontra os anúncios dentro dessa página e inclui os anúncios encontrados em um banco de dados SQLite e também envia uma notificação para um BOT no Telegram.

As entradas salvas no banco de dados são utilizadas posteriormente para detectar alterações nos preços, que também são notificadas através do Telegram.

Considerações

  • Esse script só funciona com a versão brasileira do OLX, nos outros países a interface é diferente e o scrapper não consegue puxar as informações necessárias para funcionar. Porém a adaptação para outros países deve ser consideravalmente fácil de fazer. As alterações deverão ser feitas no arquivo Scraper.js

olx-monitor's People

Contributors

carmolim avatar douglasrolim avatar

Stargazers

Leonardo Motta avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.