Dark Mode

Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

pyladies-brazil/crawler-tutorial

Repository files navigation

crawler-tutorial

Tutorial de raspagem de dados realizado em parceria com o JusBrasil e o PyLadies Salvador

Nesse tutorial ensinamos a utilizar requests e BeautifulSoup para raspar as 20 primeiras vagas da pagina de pesquisa do LinkedIn.

Esse tutorial foi baseado no blog post How to build a scraping tool for Linkedin in 7 minutes

Indice

  1. Seja muito bem vinda!
  2. Conceitos introdutorios
    • O que e um crawler?
    • Bibliotecas
      • requests
      • BeautifulSoup
    • Como uma pagina web e construida
      • HTML
      • CSS
  3. Instalando as bibliotecas
    • Ambiente virtual
      • O que e um ambiente virtual?
      • Criando um ambiente virtual
  4. Executando o crawler
  5. Explicacao detalhada do crawler
  6. Material de referencia

Seja muito bem vinda!

Se voce chegou ate aqui, significa que voce ja consegue entender conceitos basicos de programacao e desenvolvimento de algoritmos (caso queira revisar alguns conceitos de programacao veja os materiais de referencia) e esta pronta para entrar no universo dos crawlers, descobrir o que sao, como funcionam e desenvolver seu proprio crawler. E ai? Preparada?

Conceitos introdutorios

O que e um crawler?

Quando estamos navegando em algum site, preenchendo um formulario ou realizando algum pesquisa, e bem comum nos depararmos com paginas que nos pedem para identificar caracteres em uma imagem, selecionar imagens que contenham algo especifico ou marcar um checkbox e confirmar que "Eu nao sou um robo". Bom, podemos dizer que parte disso existe por causa dos crawlers!

Um web crawler, tambem conhecido como robo, e um algoritmo que acessa sites na internet de forma automatizada e atraves da analise do seu codigo fonte, varre suas paginas em busca de colher dados contidos nelas para classifica-los e/ou armazena-los, usando-os para diferentes propositos. Alguns desses propositos sao:

  • Motores de busca
  • Monitoramento de marcas ou temas em portais de noticias
  • Construcao de base de dados offline para processamento de dados

Para se desenvolver um crawler, contamos com diversas ferramentas que dao suporte a construcao desses algoritmos sem a necessidade de milhares de linhas de codigos feitas a mao por nos. Entre elas temos as bibliotecas especificas para isso.

Bibliotecas

Imagina que voce precisa fazer um bolo. Voce tem os ingredientes, voce sabe os passos da receita e voce ira segui-los. Imagina quao dificil seria se voce precisasse fazer a farinha, a manteiga, o acucar, colher o leite, criar a galinha e esperar vir o ovo... seria dificil, nao? Ainda bem que alguem ja fez isso por nos e pegamos os ingredientes prontinhos no supermercado.

E exatamente assim que sao as bibliotecas! Uma biblioteca basicamente e uma colecao de algoritmos ja prontos que podem ser reutilizados diversas vezes sem voce precisar desenvolver tudo novamente.

Se voce esta programando em Python e, em determinado momento, voce precisa escolher aleatoriamente um valor entre numeros, letras ou qualquer outra lista de valores, podemos usar a biblioteca random para isso, por exemplo:

>>> import random
>>> numero_sorteado = random.randint(0, 1000) # Sorteia um numero entre 0 e 1000
>>> numero_sorteado
466
>>> vogal_sorteada = random.choice("aeiou") # Sorteia uma letra de acordo com a string passada
>>> vogal_sorteada
'i'

Viu como o uso de bibliotecas torna a vida da pessoa programadora mais facil? Entao vamos agora entender um pouco mais sobre as duas principais bibliotecas que usaremos no nosso codigo: requests e BeautifulSoup.

requests

A biblioteca requests e utilizada para a realizarmos solicitacoes via protocolo HTTP a paginas da internet utilizando Python. Com ela e possivel receber todo um conteudo de uma pagina, preencher um formulario de cadastro e ate apagar informacoes. Por exemplo, vamos fazer uma requisicao ao site do Google:

[CONTEUDO DO SITE AQUI] '">>>> import requests
>>> response = requests.get("http://google.com") # Realiza uma solicitacao ao site do google
>>> response

>>> response.content # Conteudo do site
b' [CONTEUDO DO SITE AQUI] '

Para saber mais informacoes sobre a biblioteca requests, voce pode consultar a documentacao oficial.

BeautifulSoup

BeautifulSou (bs4) e uma biblioteca bastante utilizada quando queremos extrair dados existentes em arquivos do tipo XML ou HTML (que e o tipo mais comum utilizado nas paginas web).

Como voce deve ter percebido no topico anterior, o conteudo de uma pagina web HTML pode ser muito extenso e com uma variedade de palavras e termos confusos que podem ser encontrados mais de uma vez e, talvez, encontrar o que voce procura pode se tornar trabalhoso. Com o apoio do BeautifulSoup isso pode ser mais facil, sendo possivel encontrar elementos especificos no codigo, como o titulo da pagina (soup.title) ou o corpo (soup.body), alem de elementos nome da tag (.name) e a tag parent (.parent.name) ou buscas especificas usando o metodo find.

"tag", "body", "title"... Podem ser nomes confusos para voce ne? Nao se preocupe! No proximo topico, voce ira entender melhor como sao construidas as paginas da web e tudo isso ficara mais claro.

Curtiu? Voce pode pesquisar mais sobre a biblioteca BeautifulSoup e suas diversas funcionalidades consultando a documentacao oficial.

Como uma pagina web e construida

Para entendermos um pouco sobre como uma pagina web e contruida, vamos acessar o site da comunidade PyLadies Brasil em seu navegador. Ao acessar, voce provavelmente vai encontrar algo parecido com a imagem a seguir:

Esse e o site oficial da comunidade PyLadies no Brasil! Aqui voce ira encontrar informacoes de todas as comunidades PyLadies no Brasil, inclusive Salvador!

Agora, que tal tentarmos entender como essa pagina e estruturada? Para isso, vamos utilizar um recurso do navegador chamado inspecionar elemento, para acessa-lo, basta aperta o botao F12 ou clicar com o botao direito do seu mouse, procurar pelo nome "Inspecionar" ou "Inspecionar elemento" e clicar em cima com o botao esquerdo.

Feito isso, voce ira encontrar uma nova secao abaixo ou na lateral da sua pagina, como na imagem abaixo. Nessa secao, voce ira encontrar todo o codigo escrito no arquivo HTML responsavel pelo conteudo da pagina, alem de informacoes de estilo e elementos CSS utilizados para deixar a pagina mais bonita.

Vamos entender mais sobre isso?

HTML

HTML e um tipo de codigo interpretado pelo navegador para que uma pagina web seja exibida. A sigla HTML significa "HyperText Markup Language". HiperText significa que e um tipo de texto que suporta hiperlinks entre paginas. Markup (marcacao) vem do ato de marcar um documento com codigos que dizem para o navegador web como a interpretar a pagina. Language e de linguagem, um codigo. Sendo assim, podemos traduzir literalmente HTML como Linguagem de Marcacao de HiperTexto.

Os codigos das paginas em HTML sao estruturados a partir de tags, que representam os elementos de marcacao, cada tag comeca com < e termina com >.

A tag mais basica e a , todo o conteudo da pagina esta entre tag de inicio e a tag de fim , sendo assim, ela estara sempre no comeco do arquivo.

Alem disso, cada pagina HTML tambem e dividida em dois elementos: head (cabecalho) e body (corpo). A tag e utilizada para dizer ao navegador quais sao as configuracoes da pagina. Dentro dela, encontramos as informacoes que nao sao exibidas na tela. Ja a tag diz ao navegador qual e o conteudo de fato da pagina. Nela se encontra tudo o que se quer que apareca na pagina web. Para se construir esse conteudo de fato, contamos com outras tags que possuem uso especifico:

e muitas outras que voce pode encontrar aqui.

CSS

CSS e a sigla para "Cascading Style Sheets", que em portugues quer dizer "Folhas de Estilo em Cascata". E uma linguagem de estilo comumente utilizada para a formatacao e o visual de uma pagina web (ou de todo um site) que foi escrita em uma linguagem de marcacao, como HTML. Podemos dizer que e a responsavel por toda a beleza e estetica do site, desde a cores dos textos, fundo, estilo da fonte, animacoes e diversas outras coisas.

Para aplicar essas regras de estilo, os arquivos de CSS tem como referencia as proprias tags ou elementos delas. Sao os mais comuns: id e class.

Curtiu? Voce pode saber mais sobre CSS aqui.

Desafio:

Acesse a pagina do twitter das PyLadies Brasil (https://twitter.com/PyLadiesBrasil), inspencione-a e tente alterar o condteudo do primeiro tweet nao fixado para a seguinte frase: "Estou aprendendo um pouco sobre HTML no tutorial de crawler".

Agora que entendemos o que e um crawler, as bibliotecas que utilizaremos para desenvolver um e como uma pagina web e construida, temos a base para seguir e colocar a mao na massa no desenvolvimento do nosso proprio crawler!

Instalando as bibliotecas

Ambiente virtual

O que e um ambiente virtual?

No mundo do desenvolvimento, principalmente com Python, e comum trabalharmos ao mesmo tempo com diversos projetos. Geralmente cada um desses projetos trabalha com bibliotecas diferentes. Dessa forma, pensando em isolar cada um desses projetos e suas bibliotecas, criamos ambientes virtuais.

Caso voce queira saber mais sobre esse conceito/ferramenta, compilamos alguns materiais que podem ser uteis para voce:

Criando um ambiente virtual

Agora que sabemos o que e um ambiente virtual, vamos criar um para poder executar o nosso crawler.

  1. Abra o terminal no seu computador, e nele entre na pasta desse projeto:

    cd crawler-tutorial/

    Dependendo da onde voce baixou esse projeto, o caminho para acessar a pasta pode mudar. Para saber mais sobre o comando cd, acesse aqui.

    Para saber se estamos realmente dentro da pasta correta, voce pode executar o comando ls (mais informacoes, aqui) no terminal, ele devera mostrar os arquivos que existem nesse projeto.

  2. Crie o ambiente virtual utilizando a biblioteca venv do Python. Onde, crawler-venv sera o nome do ambiente virtual.

    python3 -m venv crawler-env
  3. Ative o ambiente virtual, caso ele ainda nao tenha sido ativado.

    • No linux:
    source crawler-env/bin/activate
    • No Windows:
    crawler-env\Scripts\activate.bat
  4. Instale as bibliotecas que iremos utilizar nesse projeto (com o ambiente virtual ativado). Essas bibliotecas e as suas respectivas versoes estao definidas no arquivo requirements.txt. No Python, para instalar bibliotecas a partir desse arquivo, executamos o comando:

    pip install -r requirements.txt

PRONTO! Conseguimos criar o nosso ambiente virtual e instalar as bibliotecas que vamos utilizar nesse projeto!

Para desativar o ambiente virtual, execute: deactivate.

Executando o crawler

Depois de ter criando o ambiente virtual e instalando as bibliotecas, ative o ambiente virtual (caso ele nao esteja ativo):

  • No linux:
source crawler-env/bin/activate
  • No Windows:
crawler-env\Scripts\activate.bat

E execute o crawler que foi desenvolvido:

python crawler.py

Explicacao detalhada do crawler

Caso voce queira entender mais a fundo esse crawler e ter acesso a muito mais material de referencia, abra no seu navegador o arquivo crawler_explicacao.html.

Voce tambem pode brincar com esse material. Para isso recomendamos voce utilizar o Jupyter, mais especificamente o JupyterLab. Sendo assim, em seu terminal execute:

jupyter-lab

TARAM! Sera aberto em seu navegador uma janelinha mais ou menos que nem essa:

Dentro do JupyterLab voce pode abrir o arquivo crawler_explicacao.ipynb e brincar com o crawler.

Boas raspagens!

Material de referencia

Releases

No releases published

Contributors