Selenium Web Scraping - Tudo o que você precisa saber em 2024

Guias, Proxies, Python, Scraping, Maio-06-20225 minutos de leitura

Coleta de dados é um termo que tem sido muito usado na última década. Toda empresa quer conhecer seus clientes por completo para que a organização possa desenvolver a melhor estratégia para resolver os problemas das pessoas. Normalmente, as organizações baseadas em tecnologia têm lagos de dados para obter dados para análise. Mas, às vezes, elas precisam coletar os dados on-line para

Coleta de dados é um termo que tem sido muito usado na última década. Toda empresa quer conhecer seus clientes por completo para que a organização possa desenvolver a melhor estratégia para resolver os problemas das pessoas. Normalmente, as organizações baseadas em tecnologia têm lagos de dados para obter dados para análise. Mas, às vezes, elas precisam coletar os dados on-line para várias análises, como análise de sentimentos, análise de SEO e monitoramento. A Web scraping é a abordagem para extrair dados de uma fonte específica e salvá-los no armazenamento local ou na nuvem. Python é a melhor linguagem de programação para executar a Web scraping. Há muitas bibliotecas em Python que podem ajudá-lo a scrape dados de sites, blogs e outras fontes on-line. As mais famosas são BeautifulSoup e Selenium. Neste artigo, veremos como executar o selenium web scraping.

O que é o site Scraping?

A Web scraping está extraindo uma grande quantidade de dados de várias páginas da Web on-line. Atualmente, os iniciantes em aprendizado de máquina e IA investem muito tempo aprendendo diferentes maneiras de usar a Web scrape. A Web scraping consiste em duas partes: crawler e scraper. O crawler é responsável por encontrar e localizar os dados necessários da fonte de destino e, em seguida, o scraper ajuda a extrair esses dados da fonte.

Selênio - O que é?

O Selenium é uma biblioteca python gratuita e de código aberto que é uma estrutura de teste automatizada usada principalmente para testar e validar aplicativos da Web em vários navegadores. Você pode usar qualquer linguagem de programação, como C#, Java e a minha favorita, Python. O software Selenium é um conjunto de ferramentas que consiste em:

  • Ambiente de desenvolvimento integrado (IDE) Selenium.
  • Controle remoto Selenium.
  • Webdriver.
  • Grade de selênio.

Vamos ver como usar o Selenium com Python para automatizar todo o processo da Web scraping .

Declaração do problema:

Nosso objetivo é scrape os nomes e os salários dos jogadores da NBA na última década e, em seguida, salvar os dados no formato de quadro de dados. OBSERVAÇÃO: para aprender e explicar como o Selenium web scraping funciona, usamos o site hoopshype.

Instalação do driver do Chrome:

Antes de iniciar o processo da Web scraping , é necessário instalar o driver do Chrome em seu computador. O driver do Chrome a ser instalado é baseado na versão do navegador Chrome que você está usando. Você pode verificar isso seguindo estas etapas:

ETAPA 1: Abra o navegador Chrome-> Clique no ícone "Hambúrguer", que está presente no canto superior direito do navegador.

ETAPA 2: Após clicar no ícone "Hambúrguer", você verá a opção "Ajuda". Clique em "Help" e selecione "about chrome browser". Depois de fazer isso, você verá a página da versão. A imagem abaixo representa a página da versão do Google Chrome.

Janela de versão do Google Chrome

Observação: Se você tiver alguma atualização, é melhor instalá-la antes de instalar o driver do Chrome.

Depois de descobrir a versão, acesse o site do driver do Chrome e faça o download do driver com base na versão do Chrome que você tem.

Instale o Selenium:

A maneira mais fácil de instalar o pacote selenium é por meio do PIP (Package Installer Python). Você pode abrir qualquer notebook, seja o Juypter ou o Google Collab, e digitar o seguinte código python:

pip install selenium

O comando acima baixa todos os pacotes de dependência do Selenium. Agora, vamos ver como implementar o site scraping com o Selenium.

Web Scraping com Selenium:

Recomendamos a criação de um ambiente virtual e a implementação do processo scraping na Web para melhor prática. Vamos usar o notebook Juypter para acessar a Web scrape neste exemplo.

ETAPA 1: Importe todas as bibliotecas necessárias. O Pandas e o Selenium webdriver são as principais bibliotecas para a Web simples scraping. O código python para importar todas as bibliotecas necessárias é mostrado abaixo:

from selenium import webdriver
from selenium.webdriver.common.keys import keys
import pandas as pd

ETAPA 2: Depois de importar as bibliotecas, a próxima etapa é iniciar o driver do Chrome. O código python é mostrado abaixo para iniciar o driver

driver = webdriver.Chrome(r"\Selenium\chromedriver.exe")

OBSERVAÇÃO: no argumento, mencione o caminho completo do local do driver do Chrome em seu sistema local.

ETAPA 3: Depois de iniciar o driver, o navegador Chrome deverá abrir em uma nova janela. Mas a janela deve estar vazia, pois não há URL de feed. O código python para o URL de feed de destino é mostrado abaixo:

seed_url = 'https://hoopshype.com/salaries/players/'
driver.get(seed_url)

ETAPA 4: Depois que o URL do feed for inserido, na nova janela, você poderá ver o site de destino. O processo a seguir é para encontrar o nome de cada jogador da NBA. No Selenium, você pode encontrar os elementos HTML pelos seguintes métodos:

  • ID
  • Seletor CSS
  • Seletor XPATH
  • Nome
  • Nome da classe
  • Nome da etiqueta

Em nosso exemplo, vamos ver como detectar os elementos usando o seletor XPATH. Queremos extrair dois detalhes desses dados:

  • Nome do jogador
  • Salário

Observação: Também é possível usar o formulário de pesquisa para localizar elementos da Web. O formulário de pesquisa está localizado na parte inferior da página Inspect.

PASSO 5: Ao chegar à página de destino, você verá uma lista de jogadores e seus salários para as temporadas (ano). Selecione qualquer um dos nomes dos jogadores e clique com o botão direito do mouse. Você verá várias opções. Nessas opções, clique em "Inspecionar". A imagem abaixo representa a página Inspecionar.

Inspecionar página do site de destino

Agora, como mencionado acima, o objetivo é extrair os nomes dos jogadores. Portanto, a primeira etapa é encontrar um elemento de um único jogador e o fator comum entre todos os elementos do jogador. Portanto, no mesmo processo, clique com o botão direito do mouse no nome do jogador e inspecione-o. Isso deve levá-lo diretamente ao local do elemento. Em vez de pegar o nome de um jogador em nosso cenário, estamos pegando os nomes de todos os jogadores. O elemento comum entre todos os jogadores é "td class-'name'". Portanto, se usarmos esse elemento e fizermos um loop, obteremos os nomes de todos os jogadores. O código python para extrair o nome de um jogador é mostrado abaixo:

nba_players = driver.find_elements_by_xpath('//td[@class="name"]')
lista_de_jogadores = []
for p in range(len(nba_players)):
    players_list.append(nba_players[p].text)
print(lista_de_jogadores)

Explicação: Como mencionado acima, estamos encontrando o elemento de código HTML usando a abordagem XPATH. Obviamente, precisamos do caminho XPATH de vários elementos. A maneira mais fácil é localizar o elemento name, que é "td class-name". Clique com o botão direito do mouse no elemento e selecione "Copiar". Você deve ter várias opções, como copiar o caminho JS e copiar XPATH. Selecione copiar XPATH e você deverá obter automaticamente o local XPATH do elemento. Cole o caminho no argumento find_elements_by_XPATH. Depois que você colar o caminho, o Python deverá começar a identificar esses elementos e obter seus endereços, não o nome real. Para obter os nomes reais dos jogadores, vamos fazer um loop na função e anexar os resultados a uma lista vazia como saída. Depois de executar o trecho de código acima, você deverá obter a saída conforme mostrado na imagem abaixo.

Saída para extrair o nome dos jogadores

Agora que temos os nomes dos jogadores, a próxima etapa é obter seus respectivos salários. O processo exato de extração do nome é realizado para obter os detalhes do salário.

ETAPA 6: Os dados de salário são extraídos usando o código python, conforme mostrado abaixo:

players_salary=driver.find_elements_by_xpath('//td[@class="hh-salaries-sorted"]')
salary_list=[]
for s in range(len(players_salary)):
    salary_list.append(players_salary[s].text)
print(lista_salário)

Explicação: O processo é o mesmo. A única diferença é o elemento comum entre os jogadores. O elemento da Web "td class-'hh-salaries-sorted'" foi o elemento comum. Depois de encontrar o elemento, criamos uma lista vazia para fazer o loop de toda a função e anexar os detalhes do salário à lista vazia. O resultado deve se parecer com a imagem mostrada abaixo:

Saída para extração do salário dos jogadores

ETAPA 7: Agora, extraímos os dados do nosso alvo. Mas, se você observar com atenção, os dados são apenas de uma estação (ano atual). Nossa declaração de problema diz para extrair os dados da última década. É aqui que a automação do navegador entra em cena. Não precisa se preocupar. Podemos usar o mesmo código para a temporada como a função de loop. O código python para automatizar o processo scraping e obter os dados da última década é mostrado abaixo:

for i in range(2010,2021):
    page_number = str(i) + '-' + str(i+1) +'/'
    feed_url = 'https://hoopshype.com/salaries/players/' + page_number
    driver.get(feed_url)
    
    jogadores = driver.find_elements_by_xpath('//td[@class="name"]')
    salários = driver.find_elements_by_xpath('//td[@class="hh-salaries-sorted"]') 
    
    player = []
   for j in range(len(players)):
        player.append(players[j].text)
    
    salário = [ ]
   for k in range(len(salaries)):
        salary.append(salaries[k].text)

Explicação: Conforme mencionado acima, nosso objetivo é obter os dados dos últimos dez anos. Para fazer isso, precisamos implementar a paginação. Paginação é o processo de adicionar números consecutivos, geralmente números de página, para identificar a sequência de ordem da página. As estações do ano são representadas no formato YYYY/MM. Para reconhecer isso, estamos usando a técnica de concatenação. Depois disso, usamos o mesmo processo e o mesmo código dentro do loop.

ETAPA 8: A última etapa é salvar os dados no quadro de dados para várias análises, como análise de sentimento e análise competitiva. O código python para salvar os dados no quadro de dados é mostrado abaixo:

df = pd.DataFrame(columns=['Player','Salary','Year'])
data = list(zip(player[1:],salary[1:])) 
df1 = pd.DataFrame(data, columns=['Player','Salary']) 
df1['Year'] = i
df = df.append(df1)

OBSERVAÇÃO: Na segunda linha do código, você pode ver que eu fiz o fatiamento. A razão por trás disso é que, quando você vê a saída dos nomes e salários dos jogadores, o primeiro índice, ou seja, o índice 0, é "PLAYER" e "DATE". Esses itens não trazem muita importância para a tabela. Portanto, podemos eliminar esses itens.

Explicação: Criamos um quadro vazio com "Player", "Salary" e "Year" como colunas. Acumulamos todos os dados em uma única lista com a função Zip para anexar a lista ao quadro de dados. Depois que os dados são adicionados ao quadro de dados, é hora de encerrar a automação e fechar o driver. Você pode salvar o quadro de dados em um arquivo CSV para um repositório de dados, se necessário.

É isso aí! Você conseguiu realizar a automação e a Web scraping usando Selenium e Python.

Perguntas frequentes:

1. O Selenium é adequado para a Web scraping?
Sim, se você estiver planejando scrape páginas dinâmicas da Web que usam JavaScript. Mas ele também é uma boa opção para Python. O Selenium é um bom ponto de partida para iniciantes interessados na Web scraping.
2. O que é melhor, BeautifulSoup ou Selenium?
Essa resposta se baseia no tipo de página da Web de destino e na escala de seu projeto. Se estiver procurando scrape uma página estática pequena e bem estruturada, então o BeautifulSoup é melhor. Se o seu projeto envolve páginas da Web dinâmicas estruturadas e complexas, o selenium web scraping pode ser a melhor opção.
3. Quais são as melhores ferramentas para a Web scraping?
Python é a melhor e mais favorável ferramenta para realizar testes na Web scraping. As bibliotecas python, como BeautifulSoup, Selenium e Request, bem como outras ferramentas, como Scrapy, são as melhores ferramentas para a Web scraping.

Conclusão:

Este artigo mostra como instalar um driver do Chrome em seu sistema local para automatizar um pequeno processo da Web scraping . Em tempo real, o manuseio de uma grande quantidade de dados (em termos de tamanho, como MB, GB e, às vezes, TB) envolve etapas complexas. O Selenium é um bom começo para iniciantes interessados em coleta de dados, processo de tela scraping e ciência de dados em geral. Conforme mencionado, um processo complexo de scraping web requer muito tempo para coletar os dados. A maioria dos sites não permite o uso da Web scraping por um período prolongado; quando você atingir esse limite, o site provavelmente bloqueará seu endereço IP e interromperá o processo da Web scraping . Para evitar essas dificuldades, é recomendável usar um proxy. ProxyScrape A web proxies fornece excelente residencial que é mais adequado para tarefas de alta demanda, como a web scraping.

ISENÇÃO DE RESPONSABILIDADE: este artigo é estritamente para fins de aprendizado. Sem seguir as diretrizes adequadas, a execução da Web scraping pode ser ilegal. Este artigo não apóia a Web scraping ilícita de forma alguma.