Git Product home page Git Product logo

webscraping's Introduction

WebScraping

Acessando a internet, coletando seus dados e apresentando-os

imagem

Tópicos:

🔹 Sobre o projeto

🔹 Arquivos

🔹 Sobre o arquivo app

🔹 Sobre o arquivo planilhas

🔹 Lógica utilizada para encontrar os dados no site

🔹 Requisitos para rodar o programa

🔹 Como rodar o código

Sobre o projeto:

A iniciativa da criação desse projeto se deu por uma vaga de emprego que concorri, a qual teve como teste para os candidatos a criação de um script cuja função é realizar um WebScraping. Sendo assim, a tarefa foi:

  • Abrir o site da Amazon;
  • Pesquisar por Iphone;
  • Coletar os dados de todos os resultados encontrados;
  • Criar uma planilha com esses dados.

Arquivos:

  • app.py: arquivo principal, é ele quem deve ser executado;
  • planilhas.py:arquivo que possui os métodos voltados à criação da planilha.

Sobre o arquivo app:

  • Linhas 1 à 4 : importando bibliotecas e módulo;
  • Linha 6: declarando o navegador que será usado;
  • Linhas 8 à 13: com auxílio da biblioteca selenium, abrindo a página inicial da Amazon para o Brasil (https://www.amazon.com.br), procurando a barra de pesquisa, digitando “iPhone” na barra e clicando no botão pesquisar;
  • Linhas 17 e 18: passando para o BeautifulSoup o conteúdo HTML da página em que o programa se encontra no momento;
  • Linha 20: atribuindo à variável “tagsPai” uma lista onde cada item refere ao bloco de código referente a cada produto retornado pelo site;
  • Linha 23: inicia o laço de repetição que para cada item dentro da lista “tagsPai” será efetuado os seguintes comandos;
  • Linhas 24 e 25: atribuindo à variável “precoInt” o valor referente ao preço;
  • Linhas 26 à 30: caso o valor recebido na variável “precoInt” não seja do tipo nulo será atribuído à variável “preco” os valores inteiro e fracionário do preço do produto concatenados. Caso o valor recebido na variável “precoInt” seja do tipo nulo o programa entende que o site não disponibiliza esta informação e atribui à variável “preco” o valor “Indeterminado”;
  • Linhas 32 à 34: acha onde está o valor referente ao nome do produto, o capta e converte em uma string;
  • Linha 36: adiciona à lista “produtos” um dicionário contendo o valor referente ao nome e o preço do produto;
  • Linha 38: chama o método que cria a planilha com o nome de “iPhone_Amazon”.

Sobre o arquivo planilhas:

  • Linhas 1 e 2: importa da biblioteca openpyxl os comando necessários;

  • criaPlan (nomeArq, produtos): recebe como parâmetro um valor referente ao nome a ser dado à planilha e ao título e uma lista de dicionários que contenham os nomes dos produtos e seus respectivos valores. O método irá criar a planilha, suas linhas iniciais e chamará os demais métodos para adicionar os registros e estilizar a planilha;

  • addProdutos (produtos, plan, linhaInicial): Recebe como parâmetro a lista de produtos, a referência da planilha em que serão adicionados os produtos e a linha de onde o método poderá inicial a adicionar os registros. Basicamente, a função do método é adicionar os valores referentes ao preço e o nome dos produtos na tabela;

  • estiliza (planilha, celulas, estilo): recebe como parâmetro a referência da planilha que será modificada, uma lista com cada célula da planilha que será modificada e o tipo de estilo. O método estiliza as células da planilha (cor da fonte, espessura da fonte, cor de fundo da célula, e bordas), caso o valor referênte ao estilo seja 1 as células serão estilizadas como células de título, caso seja 2 as células serão estilizadas como células de valores.

Lógica utilizada para encontrar os dados no site:

  1. Primeiramente separei os registros de cada produto retornado pelo site, assim, notei que cada registro está em uma div com um atributo “data-component-type” com o valor “s-search-result” que foi o critério usado para separá-los:

  2. Imagem referente ao item 1
  3. Uma vez que tenho cada registro separado e todos dentro de uma lista, apenas preciso de um loop que percorre cada item da lista para recuperar os dados;
  4. Para obter o nome do produto notei que esta informação está na única tag span dentro da primeira tag h2 dentro do registro:

  5. Imagem referente ao item 3
  6. Para obter o preço do registros percebi que este valor estava dentro de uma tag spam com o valor “a-offscreen”:

  7. Imagem referente ao item 4
    • Outro caminho pode ser tomado ao perceber que o valor estava quebrado em dois (provavelmente por conta de estética da página), a parte em reais inteiros estava dentro de uma span com o valor de “a-price-whole” para a classe e a parte em centavos estava numa span com o valor de “a-price-fraction” para a classe.Portanto, seria necessário recuperar esses dois dados e os concatenar.

    • Imagem referente à segunda opção  do item 4

Condições para a execução do programa:

Além das condições já ditas sobre os itens a serem instalados no computador que irá executar o programa há mais uma condição para o bom funcionamento. Em algumas situações o site da Amazon pode redirecionar o programa para uma página inicial paralela (talvez por sobrecarga de acesso), neste caso o programa não conseguirá captar o endereço da barra de pesquisa uma vez que seus atributos e chave “xpah” mudaram. Abaixo uma imagem do layout da página inicial padrão da Amazon que o programa espera encontrar:

Imagem da página inicial que o programa espera

Outra situação que pode ocasionar mal funcionamento é caso já exista uma planilha com o nome “iPhone_Amazon”. Neste caso o programa não irá criar outra planilha e nem substituir a planilha existente.

Requisitos para rodar o programa:

  • Python (de preferência, versão 3.8 ou superior);
  • Selenium (versão mais recente até outubro de 2022);
  • BeautifulSoup4
  • Openpyxl (versão mais recente até setembro de 2022);
  • Google Chrome;
  • ChromeDriver referente à versão do Chrome.
Imagem logo do python Imagem logo do Selenium Imagem logo do BeautifulSoup Imagem logo do openpyxl Imagem logo do ChromeDriver

Como rodar o código:

  1. Selecione a pasta que deseja baixar o projeto, abra a interface de linha de comando do Git e cole o seguinte código para clonar o projeto:
    git clone https://github.com/KevinFGR/WebScraping.git 
    
  2. Abra a interface de linha de comando do seu computador na pasta webscraping e insira o seguinte comando para executar o programa:
    py app.py
    
  3. Aguarde a execução do programa;
  4. Após o programa informar que a planilha foi criada você pode encontrá-la na pasta do projeto com o nome "iPhone_Amazon".

🔹 Voltar ao topo

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.