Como Scrape um site JavaScript usando Python

Como fazer, Python, Scraping, Nov. -15-20225 minutos de leitura

Os navegadores da Web usam Javascript para criar uma experiência dinâmica e interativa para o usuário. A maioria dos aplicativos e funções que tornam a Internet indispensável para a vida moderna está codificada na forma de Javascript. Considerando as primeiras encarnações do Javascript, as páginas da Web eram estáticas e ofereciam pouca interação com o usuário além de clicar em links

Índice

Os navegadores da Web usam Javascript para criar uma experiência dinâmica e interativa para o usuário. A maioria dos aplicativos e funções que tornam a Internet indispensável para a vida moderna está codificada na forma de Javascript. Considerando as primeiras encarnações do Javascript, as páginas da Web eram estáticas e ofereciam pouca interação com o usuário além de clicar em links e carregar novas páginas. 

Veja a seguir alguns dos aprimoramentos dinâmicos do site que são realizados pelo Javascript.

  • Validação de entrada de formulários da Web
  • Animação de elementos da página, como redimensionamento, realocação e desvanecimento
  • Carregamento de novos dados sem recarregar a página
  • Reprodução de áudio e vídeo
  • Correção dos problemas de compatibilidade do navegador

Você pode usar o scraping para coletar dados estruturados de sites de forma automatizada. A Web scraping também é conhecida como extração de dados da Web. Alguns dos principais casos de uso da Web scraping são os seguintes:

  • Monitoramento de notícias
  • Inteligência de preços
  • Geração de leads
  • Monitoramento de preços
  • Pesquisa de mercado

Primeiro, vamos entender a necessidade de scrape websites.

Por que você precisa Scrape um site em Javascript?

As empresas usam a Web scraping para aproveitar a grande quantidade de dados disponíveis publicamente para tomar decisões mais inteligentes. Abaixo estão algumas das áreas em que a web scraping é usada.

  • Comércio eletrônico
  • Mídia social
  • Bancário 
  • Finanças
  • Marketing 
  • Imóveis
  • Finanças
  • Otimização de mecanismos de busca
  • Leads de vendas

Veja a seguir os motivos pelos quais as empresas precisam acessar scrape os sites.

Automação - Não é possível copiar e colar cada informação de um site. As empresas usam os softwares scraping para automatizar a maioria de seus processos associados.

Gerenciamento de dados - Não é possível usar bancos de dados e planilhas para gerenciar números e cifras em um site configurado em HTML. Portanto, as empresas usam as ferramentas da Web scraping para gerenciar seus dados.

Listagem de imóveis - Os agentes imobiliários usam a Web scraping para preencher seu banco de dados de propriedades disponíveis para aluguel ou venda. 

Dados de comparação de sites de compras - As empresas usam a Web scraping para scrape dados de preços e produtos de cada varejista, para que possam fornecer aos usuários os dados de comparação desejados. 

Estatísticas e percepções do setor - As empresas usam o site scraping para criar bancos de dados enormes e obter percepções específicas do setor a partir deles. Por exemplo, uma empresa pode scrape e analisar toneladas de dados sobre os preços do petróleo. Em seguida, ela pode vender suas percepções para empresas de petróleo em todo o mundo.

Scraping Um site em Javascript usando Python

Vamos ver como você pode usar o Selenium para scrape sites em Javascript.

Instalação da biblioteca Selenium

Você pode instalar o Selenium usando o seguinte comando.

pip install selenium

Instalação do driver da Web

Você sabia que o Selenium simula um navegador real? Ele não usa sua instalação do Chrome, mas sim um driver para executar um navegador. Os drivers da Web do Selenium referem-se às ligações de linguagem e às implementações do código de controle do navegador individual. Você precisa baixar o driver da Web e pode adicioná-lo à variável de ambiente path. Usaremos o driver da Web do Firefox e você pode instalá-lo seguindo este link.

Exemplo

Vamos considerar um exemplo simples do selenium que envolve a coleta do título de um site. Para isso, primeiro importaremos o webdriver do selenium em um arquivo python, conforme mostrado abaixo:

from selenium import webdriver

Temos de mencionar o caminho onde o webdriver está localizado. Em seguida, temos de inicializar o driver da Web do Firefox.

WEBDRIVER_PATH = './'
driver = webdriver.Firefox(WEBDRIVER_PATH)

Agora, definimos o URL para obter o título do site.

URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)

A execução do código acima abre uma janela do Firefox que imprime no console o título do site. Definimos o URL do Google como exemplo neste caso, portanto, o resultado será o seguinte:

Esta é a página do Google no driver da Web do Firefox. O título impresso no console será o seguinte:

Temos que fechar manualmente a janela do Firefox que foi aberta. Adicionaremos driver.quit() no final do nosso código para que a janela seja fechada automaticamente após a conclusão do trabalho. 

from selenium import webdriver 

WEBDRIVER_PATH = './'
driver = webdriver.Firefox(WEBDRIVER_PATH) 

URL = 'https://www.google.com'
driver.get(URL)
print (driver.title)
driver.quit()

Caso queira coletar dados de um site dinâmico, você pode seguir as mesmas etapas mencionadas acima. Por exemplo, se quiser recuperar o título do YouTube, você pode usar o código abaixo.

from selenium import webdriver 
 
WEBDRIVER_PATH = './' 
driver = webdriver.Firefox(WEBDRIVER_PATH) 
URL = 'https://www.youtube.com'
driver.get(URL)
print (driver.title)
driver.quit()

Vamos tentar algo novo aqui. Podemos editar a caixa de pesquisa e preenchê-la com a palavra "Selenium" usando a classe "Keys", conforme mostrado abaixo.

from selenium.webdriver.common.keys import Keys

Depois de inicializar o driver da Web do Firefox e obter o título do YouTube, criamos um objeto que contém a caixa de pesquisa com xpath.

search_box = driver.find_element_by_xpath('//input[@id="search"]')

Em seguida, editamos o conteúdo da caixa de pesquisa e o preenchemos com a palavra "Selenium".

search_box.send_keys('Selenium')

Depois de preencher a caixa de pesquisa com o conteúdo desejado, podemos pressionar "Enter" para tornar a pesquisa ativa.

caixa_de_busca.send_keys(Chaves.ENTER)

Você pode ver na imagem abaixo que a caixa de pesquisa do YouTube contém a palavra "Selenium".

Usando um Proxy

O proxies é necessário quando você precisa de um conteúdo da Web localizado. Eles também são necessários quando você envia muitas solicitações a um site em um curto período de tempo. Você precisa do proxies para o Selenium quando são necessários testes automatizados. No entanto, para usar um Selenium proxy para scraping um site Javascript, você precisa usar um fio Selenium que estenda as ligações do Selenium e dê acesso às solicitações subjacentes feitas pelo navegador.

Para usar o Selenium com um proxy, o pacote a seguir é o que você precisa instalar.

from selenium wire import webdriver

Depois de instalar a biblioteca Python selenium-wire, você precisa mencionar o seguinte:

  • proxy_nome de usuário
  • proxy_senha
  • proxy_url
  • proxy_port

Aqui mencionamos um número aleatório porta 8080 como exemplo. Você pode definir o nome de usuário, a senha e o URL do site desejado de sua escolha.

proxy_username = "USER_NAME"
proxy_password = "PASSWORD"
proxy_url = "Any Website URL"
proxy_port = 8080

options = {
    "proxy": {
        "http": f"http://{proxy_username}:{proxy_password}@{proxy_url}:{proxy_port}",
        "verify_ssl": False,
    },
}

Para o driver da Web Selenium, o site residencial proxies é a melhor opção. Isso ocorre porque eles não são facilmente detectados, ao contrário do data center proxies. Eles encaminham as solicitações dos clientes por meio de IPs residenciais e ganham mais confiança do que os IPs do data center. Eles também são úteis no acesso a sites complexos que usam Javascript, como Youtube, Google, Instagram etc.

Por que usar Proxies para Scraping um site JS?

Você precisa usar o proxies para scraping um site pelos seguintes motivos:

  • Proxies são usados para melhorar a segurança e equilibrar o tráfego de Internet de um site.
  • Os raspadores da Web precisam usar o site proxies para ocultar sua identidade e fazer com que seu tráfego se pareça com o tráfego de usuários comuns.
  • O site proxies também é usado para proteger os dados pessoais dos usuários da Web.
  • Proxies ajuda a acessar os sites que estão bloqueados pelo mecanismo de censura do país.
  • Você pode rastrear sites usando o proxies de maneira confiável. 
  • Proxies são valiosos quando você precisa acessar scrape dados de produtos de varejistas on-line. Isso ocorre porque eles permitem que você faça sua solicitação de uma determinada região geográfica, e você pode acessar o conteúdo específico que o site exibe para esse local.
  • Proxies ajudam você a fazer um grande número de solicitações ao site de destino sem ser banido.
  • Você pode usar o proxies para fazer conexões simultâneas ilimitadas com o mesmo site ou com sites diferentes.

Conclusão

O site scraping é importante, pois você pode usá-lo para:

  • Scraping anúncio de produtos/serviços e fazer insights sobre seus orçamentos
  • Prever a tendência da moda para se manter competitivo
  • Scraping canais de mídia social e descoberta de clientes em potencial etc.

Além disso, discutimos como você pode usar o Selenium para scrape sites em destaque em Javascript no Python. Você pode scrape conteúdo de sites estáticos e também de sites dinâmicos como o YouTube. Você também precisa usar o Selenium proxies para testes automatizados. Os melhores proxies que você pode usar são osproxies residenciais , pois são super rápidos e não podem ser facilmente detectados, ao contrário de outros proxies.

Espero que você tenha entendido como scrape um site em Javascript usando Python.