Extrair informações da internet de forma automatizada. Existem diversas maneiras de fazer isso, nesse tutorial vamos ver algumas delas, por meio de bibliotecas de python.
- Automatizar processos
- Gerar Leads
- Acompanhar produtos
- Fazer projetos!!!
Bom, é legal, mas nem sempre é legal. Em geral, criar web scrapers é muito divertido, mas nem sempre é uma coisa legalizada. Por isso é importante ficar atento aos termos de uso dos sites. O linkedin, por exemplo, não permite que sejam utilizados scrapers em nenhuma situação.
Todos os códigos são feitos em Python 3. Além disso, são utilizadas algumas bibliotecas, as principais são:
Outras bibliotecas são utilizadas de apoio, e para instalar tudo, basta utilizar o arquivo requirements.txt presente nesse repositório por meio do comando:
pip3 install -r requirements.txt
O projeto tem uma ideia bem direta: descobrir quais palavras os artistas mais utilizam em suas músicas. Para isso vamos scrapar o site letras.mus, buscando todas as músicas de um dado artista.
Nessa versão do projeto, pegamos as letras do letras.mus e contamos a palavras.
A segunda versão do projeto envolve pegar os artistas mais relevantes do lastfm e, para cada um desses artistas, fazer a contagem das palavras. Nessa versão usamos requests-html para renderizar a página.
Na terceira versão do projeto, fazemos o mesmo que na versão 2, porém dessa vez é feita a requisição direto em um endpoint com a biblioteca requests.
A última versão do projeto envolve buscar a quantidade de ouvintes mensais dos artistas no spotify. Para isso usamos selenium.
- Biblioteca para fazer requisições web.
- Pode ser utilizada para get, post, delete...
- Precisa de outra biblioteca para fazer parsing do html.
- Biblioteca para fazer parsing do html.
- Útil pois permite busca por xpath de forma nativa.
- Minha queridinha s2
- Biblioteca para fazer parsing do html.
- Tem muita documentação e perguntas na internet (alo stackoverflow)
- É bem flexível, permite o uso de diversos parsers, mas não tem xpath =(
- Em muitos casos só a requisição não basta. É preciso também renderizar o javascript da página. A biblioteca requests não tem essa funcionalidade.
- A requests-html pode ser usada da mesma maneira que a requests, mas possui essa nova funcionalidade de renderização.
- Precisa de outra biblioteca para fazer parsing do html (pode usar qualquer uma das duas citadas acima).
- Selenium é uma ferramenta de automatização de software e é muito utilizada para realização de testes. MAS é super útil para scraping também.
- Como o software simula um navegador, muitas vezes "engana" melhor os antibots. Além disso, renderiza o javascript normalmente, então serve para esses casos também.
- Na maioria das vezes, usar selenium é matar uma barata com um canhão, mas em alguns momentos pode ser útil.
- Truque: se nada que você fizer funcionar naquele site, tenta usar o selenium e fazer requisições para outros sites com aquele driver. Isso vai gerar cookies no navegador e vai ser mais fácil se passar por um usuário comum.
- Um dos melhores truques de scraping é buscar enpoints na aba de network do navegador.
- Isso permite fazer uma requisição direta sem precisar fazer parsing de html, o que facilita nossa vida e ainda é mais rápido.
- É o jeito mais fácil de codar, mas as vezes exige paciência para encontrar o endpoint certo.
- Para o código basta:
- Clicar em network
- Encontrar endpoint
- Clicar com botão direito
- Clicar em "Copiar como Curl"
- Ir para esse site
- Copiar resultado como requests
- Ta pronto o sorvetinho
Existem muuuuitos sites com tutoriais por aí, mas eu gosto bastante de usar o Medium para aprender esse tipo de coisa. Algumas sugestões de texto são:
- Data Science Skills: Web scraping using python
- Learn Web Scraping using Python in under 5 minutes
- Como fazer Web Scraping em Python
Além disso, também tem esse projeto guiado no Coursera que é bem legal.
No mais, pega alguns sites e vai tentando. Se der errado, pesquisa no StackOverflow e tenta entender o que rolou, isso é um processo importante também!
E uma última dica, tem muuuitos sites diferentes por ai, cada um com sua própria peculiaridade. Não dá para aprender TUDO de scraping sem ir treinando, então recomendo aprender o básico e depois ir pesquisando sob demanda as coisas mais complexas =D
Vocês tem meus contatos, então podem ficar a vontade pra mandar mensagem/email sempre que precisarem =D