Hoje vamos fazer uma coisa relativamente simples mas bem legal.
Vamos criar um BOT que irá se conectar com um anúncio do Mercado Livre e irá dizer pra nós qual é a quantidade disponível desse produto no estoque do vendedor.
Por motivos variados talvez você precise fazer isso um dia, talvez não com o ML, mas com outro site.
Vamos fazer algo específico: monitorar apenas a quantidade do produto no ML. Mas o exemplo de código que vamos criar serve para monitorar qualquer informação de qualquer site! Basta você saber um pouco de HTML e criar a lógica certa. Para este exemplo vamos usar Python 3.4.
Um pouco sobre BeautifulSoup extraído e traduzido da documentação oficial:
"Beautiful Soup é uma biblioteca Python para extrair dados de arquivos HTML e XML. Ele funciona com o seu analisador favorito para fornecer maneiras idiomáticas de navegar, pesquisar e modificar a árvore convertida (DOM). Ele comumente salva programadores horas ou dias de trabalho."
Palavras bonitas não concorda? Vamos ver na prática então:
Primeiro passo: como e onde olhar para saber a quantidade disponível de um produto no ML. Futuramente isso pode mudar, mas hoje é assim:
Considere esse anúncio que estava ativo na data de hoje: http://produto.mercadolivre.com.br/MLB-713818524-mouse-logitech-g602-wireless-2500dpi-11-botoes-gar-3-anos-_JM
É um G602 (eu tenho hihi).
Ostentações a parte vamos ao que interessa, no navegador Chrome ou Firefox, entre no anúncio e clique com o botão direito em cima do preço e selecione "exibir código fonte".
Aperte ctrl + F e busque pela palavra "Quantidade".
Você vai ver uma coisa +/- assim:
Não precisa pensar muito pra ver que o input "productStockQuantity" tem os atributos "min" e "max" setados. E o atributo "max" está com o valor 2:
Significa que mesmo que você queira comprar mais de 2 unidades, não vai poder. Por quê? Porque só tem 2 no estoque.
Podemos ver também que junto com esse input tem mais 2 outros e os 3 inputs estão dentro de uma tag div, que por sua vez está dentro de um form (id="productInfo").
Mas não é necessário acessar o form pra pegar o input de quantidade do produto, podemos acessar diretamente o input, vajamos o código necessário pra fazer tudo isso:
from bs4 import BeautifulSoup
from urllib.request import urlopen
url = 'http://produto.mercadolivre.com.br/MLB-713818524-mouse-logitech-g602-wireless-2500dpi-11-botoes-gar-3-anos-_JM'
html = urlopen(url).read()
soup = BeautifulSoup(html, 'html.parser')
quntidadeMaxima = soup.find(id="productStockQuantity")["max"]
print(quntidadeMaxima)
Você vai ver isso:
Sempre quis dizer isso: Mais fácil que isso é difícil! rsrs.
Se você nunca desenvolveu em Python, para executar o código abaixo basta abrir um editor de texto colar o código, ir até o diretório onde está o script e dar o comando: "python3 nomeDoScript.py".
Agora vamos entender o que foi feito.
Aqui importamos a biblioteca BeautifulSoup e urlopen para poder se conctar com o site e ler as tags html dele.
from bs4 import BeautifulSoup
from urllib.request import urlopen
Em seguida lemos todo o texto HTML do link abaixo e jogamos dentro de uma variável.
url = 'http://produto.mercadolivre.com.br/MLB-713818524-mouse-logitech-g602-wireless-2500dpi-11-botoes-gar-3-anos-_JM'
html = urlopen(url).read()
Aqui pegamos o texto html e passamos para o BeautifulSoup transformar em um objeto Python que podemos ler facilmente com a sintaxe Python.
soup = BeautifulSoup(html, 'html.parser')
Então pedimos ao BeautifulSoup buscar na tag de quantidade do produto (productStockQuantity) o valor do atributo "max", daí criamos uma variável e jogamos esse conteúdo dentro dela, depois mandamos imprimir o valor na tela.
quntidadeMaxima = soup.find(id="productStockQuantity")["max"]
print(quntidadeMaxima)
Desculpe possivelmente ofender sua inteligência, mas talvez você pense: "ué! ele fez um script que lê uma quantidade de um produto anunciado? É melhor eu entrar no site e olhar ué...".
Na verdade eu demonstrei como ler 1 produto a título de exemplo...
Imagine agora que por um motivo qualquer você têm 1000 anúncios cadastrados em um banco de dados e você precise monitorar esses anúncios a cada meia hora. Não vai dar pra você "entrar no site e olhar".
Mas você pode fazer uma função Python que retorna a quantidade disponível com base em uma url passada como parâmetro. Por Exemplo:
from bs4 import BeautifulSoup
from urllib.request import urlopen
def quantidadeDisponivelML(urlProduto):
html = urlopen(urlProduto).read()
soup = BeautifulSoup(html, 'html.parser')
quntidadeMaxima = soup.find(id="productStockQuantity")["max"]
return quntidadeMaxima
if __name__ == '__main__':
url = 'http://produto.mercadolivre.com.br/MLB-713818524-mouse-logitech-g602-wireless-2500dpi-11-botoes-gar-3-anos-_JM'
quantidadeDisponivel = quantidadeDisponivelML(url)
print(quantidadeDisponivel)
E imagine que você poderia chamar essa função de uma outra função que pega cada link e passa para essa retornar a quantidade, etc.