Vous êtes sur la page 1sur 8

Engenharia Aplicada Francis Benjamin Zavaleta Castro

WEB SCRAPING COM PYTHON-PARTE I

1. FUNDAMENTOS DE WEB SCRAPING


Na atualidade, a internet é parte da nossa cotidianidade e até certo ponto indispensável,
já seja para pesquisa, negócios ou tempo de ociosidade, todo dia realizamos
impensáveis trocas de dados na web.
Sendo a internet uma imensa fonte de dados, a coleta eficiente deles resulta ser um
diferencial competitivo, é assim que surge a técnica de “raspagem” da web, melhor
conhecido como webscraping, transformando dados sem estrutura (documento Html)
em dados estruturados para o armazenamento e posterior análises.

Client Server Html Doc.


Request
Robô
Indexação

Estruturação

Esquema 1-Estrutura básica de WebScraping (Zavaleta 2018)

No esquema 1 pode-se notar que um robô realiza a petição no servidor, como se fosse
um humano, o servidor descarga o documento html, é nessa ação que começa a
indexação e a procura na estrutura html da informação de interesse, para
posteriormente ser armazenada em SpreadSheets ou Databases.
Os robôs de captura de informação geralmente são denominados como Spiders, e pela
finalidade o processo pode-se dividir em Crowling vertical e horizontal.
Crowling vertical

Item 1 Item 2 Item 3

Item 4 Item 5 Item n

Pagina 1 2 3 4 5 6 7 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . n

Crowling horizontal
Esquema 2-Tipos WebScraping (Zavaleta 2018)
Engenharia Aplicada Francis Benjamin Zavaleta Castro

O crowling vertical, procura numa página em específico informação item por item, o
processo horizontal é feito a procura em várias páginas em simultâneo.

2. DESENVOLVIMENTO DO CÓDIGO
Vamos utilizar Python para programar nosso primeiro Spider na ide Jupiter Notebook
no ambiente de desenvolvimento de Anaconda , mas o leitor pode programar na ide da
sua preferência.
E importante grifar que as práticas ensinadas devem ser aplicadas eticamente, sem
usurpar informações confidenciais nem lucrar com os dados sem a permissão dos donos.
O conteúdo neste artigo é totalmente para fins didáticos.
A lógica de programação será em função no esquema 1:
Biblioteca urllib. request
Url Capturar a
Realizar a Fechar a
Semilha petição resposta(bytes) conexão

Indexação a Estruturação
Salvar em Estruturação
partir de uma html da
arquivo csv de dados
lista resposta
Biblioteca BeautifulSoup
Esquema 3-Lógica de programação Spider (Zavaleta 2018)

Do esquema 3, podemos notar que precisaremos de 2 bibliotecas do Python:


BeautifulSoup e Urllib, a segunda já e padrão do python 3, para instalar a primeira
precisaremos seguir os seguintes passos:
• Windows: acessar o Anaconda Prompt e digitar pip install bs4
• Linux: entrar no terminal e acessar o diretório de instalação:
#!/bin/sh_CONDA_ROOT=”/home/usuário/anconda3”
\. “$_CONDA_ROOT/etc/profile.d/conda.sh”|| return $?_conda_activate”$@”
Digitar: pip install bs4

Vamos chamar as bibliotecas:

Agora procederemos a definir a nossa url semilha como variável, que será a procura de
uma placa esp8266 NodeMcu:

Vamos realizar a petição no servidor:


Engenharia Aplicada Francis Benjamin Zavaleta Castro

Agora precisaremos acessar o documento html, resposta do servidor:

E interessante olhar a resposta armazenada na variável Dochtml:

Vemos que retornou um conjunto de bytes, sem a formatação html, necessária para
realizar a indexação, já que capturamos a resposta fecharemos o processo I/O para
posteriormente dar o formato necessário:

Formatando a resposta:

Interessante notar a formatação da biblioteca BeautifulSoup:

Já temos capturada a estrutura html da página na nossa spider, vamos a proceder na


indexação, para isso precisaremos ativar a ferramenta do desenvolvedor no site
Engenharia Aplicada Francis Benjamin Zavaleta Castro

Com o cursor selecionaremos qualquer elemento (artículo de venda) e olharemos a


estrutura html:

Temos que entender uma estrutura html como um modelo de árvore, para isso é
necessário procurar o “pai”, nosso caso é li class

Vemos que são estruturas similares, e existem uma para cada produto visualizado na
página, estruturaremos essas informações numa lista, para isso procuraremos todos os
objetos li que contém a classe "results-item article grid item-info-height-169”

Agora que temos a estrutura html de interesse, procederemos a estruturar os dados,


para isso percorreremos todo o vetor(lista) utilizando uma estrutura de interação For:

Vamos a pegar o nome da postagem para isso na estrutura html:

Acrescentando na estrutura for:


Engenharia Aplicada Francis Benjamin Zavaleta Castro

Procederemos a identificar em que parte da estrutura html está o preço:

Vamos acrescentar primeiramente o preço inteiro em reais:

Podemos notar que estamos indexando o texto, pegando o caráter da primeira posição,
temos que ter cuidado com os centavos de reais porque pode não existir caso que o
valor seja múltiplo de 10(R$10, R$150, etc), nesse exemplos a indexação resultaria num
erro “fora do range”, para isso vamos tratar esse erro utilizando uma estrutura
condicional:

Agora concatenaremos os dois valores e converteremos em número (o resultado da


indexação é um texto):

Vamos a visualizar os dados resultantes da estrutura for, é bom lembrar que o “article”
é um iterável que só existe na estrutura, que toma o valor de cada item na página.
Articles é a lista, é assim como funciona a lógica de procurar item por item, realizando
um crowling vertical, idêntico no esquema 2.
Engenharia Aplicada Francis Benjamin Zavaleta Castro

Resultante da estrutura for:

Vemos que os dados estão estruturados, definidos em dois campos: título e preço total,
agora vamos a salvar esses dados num arquivo csv:

O arquivo com a extensão criada:


Engenharia Aplicada Francis Benjamin Zavaleta Castro

Abrindo o arquivo para conferir os dados:

3. CONCLUÇÕES:

• As praticas de webscraping são utilizadas para extrair informação da web


quando não se tem uma API, o processo basicamente consiste na coleção de
dados não estruturados, capturar a informação relevante e salvar num
spreadsheet ou database.

• Python é uma linguagem muito versátil, utilizando as bibliotecas pode-se


construir um bot eficiente e simples para coleta de dados da web.

• As praticas de webscraping precisam de um conhecimento básico de html que


é a linguagem da web e python, sendo um processo de construção lógica,
qualquer pessoa com a vontade de melhorar as suas pesquisas na web pode
criar um spider.

• O sucesso dos requests feitos pelo robô, dependeram das restrições do firewall
e a rede, muitos servidores têm barreiras para detectar bots e usuários não
humanos, tornando-se um verdadeiro desafio realizar webscraping.

• As praticas de Webscraping sempre devem ser aplicadas tomando em


consideração a ética profissional, já que pode virar uma pratica ilegal
dependendo do tipo de informação que seja coletada.
Engenharia Aplicada Francis Benjamin Zavaleta Castro

4. SOBRE O AUTOR:
Francis Benjamin Zavaleta Castro:
Formado em engenharia Industrial e engenharia de produção, é
consultor sênior de Data & Analytics, seu principal campo de estudo
é o desenvolvimento de soluções de negócio inteligentes integrando
eletrônica, ciência da computação e tecnologias emergentes.

Email:benjamin1992.1992@gmail.com

Linkedin: https://www.linkedin.com/in/benjaminzavaleta/

Vous aimerez peut-être aussi