Web Scraping com Python: um guia para iniciantes

Publicados: 2016-10-10

No mundo do Big Data, os serviços de Web Scraping ou extração de dados são os principais requisitos para Big Data Analytics. Extrair dados da web tornou-se quase inevitável para as empresas permanecerem no mercado. A próxima pergunta que surge é como fazer a raspagem da web como iniciante.

python de raspagem da web

Os dados podem ser extraídos ou raspados de uma fonte da Web usando vários métodos. Sites populares como Google, Facebook ou Twitter oferecem APIs para visualizar e extrair os dados disponíveis de forma estruturada. Isso impede o uso de outros métodos que podem não ser preferidos pelo provedor da API. No entanto, a demanda para rastrear um site surge quando as informações não são prontamente oferecidas pelo site. Python, uma linguagem de programação de código aberto, é frequentemente usada para Web Scraping devido ao seu ecossistema simples e rico. Ele contém uma biblioteca chamada “BeautifulSoup” que realiza essa tarefa. Vamos dar uma olhada mais profunda na web scraping usando python.

Configurando um ambiente Python:

Para realizar o web scraping usando Python, primeiro você terá que instalar o Python Environment, que permite executar código escrito na linguagem python. As bibliotecas realizam a extração de dados;

Beautiful Soup é uma biblioteca python conveniente de usar. É uma das melhores ferramentas para extrair informações de uma página da web. Os profissionais podem rastrear informações de páginas da Web na forma de tabelas, listas ou parágrafos. Urllib2 é outra biblioteca que pode ser usada em combinação com a biblioteca BeautifulSoup para buscar as páginas da web. Filtros podem ser adicionados para extrair informações específicas de páginas da web. Urllib2 é um módulo Python que pode buscar URLs.

Para MAC OSX:

Para instalar bibliotecas Python no MAC OSX, os usuários precisam abrir um terminal win e digitar os seguintes comandos, um comando por vez:

sudoeasy_install pip

pip instalar BeautifulSoup4

pip instalar lxml

Para usuários do Windows 7 e 8:

Os usuários do Windows 7 e 8 precisam garantir que o ambiente python seja instalado primeiro. Uma vez que o ambiente esteja instalado, abra o prompt de comando e encontre o caminho para fazer root no diretório C:/ e digite os seguintes comandos:

easy_install BeautifulSoup4

easy_installlxml

Depois que as bibliotecas estiverem instaladas, é hora de escrever um código de raspagem de dados.

Executando Python:

A raspagem de dados deve ser feita para um objetivo distinto, como rastrear o estoque atual de uma loja de varejo. Primeiro, é necessário um navegador da Web para navegar no site que contém esses dados. Depois de identificar a tabela, clique com o botão direito do mouse em qualquer lugar e selecione o elemento inspecionar na lista do menu suspenso. Isso fará com que uma janela apareça na parte inferior ou lateral da tela exibindo o código HTML do site. As classificações aparecem em uma tabela. Talvez seja necessário examinar os dados HTML até encontrar a linha de código que destaca a tabela na página da Web.

Python oferece algumas outras alternativas para raspagem de HTML além do BeautifulSoup. Eles incluem:

  • Scrapy
  • Raspado
  • Mecanizar

A raspagem da Web converte dados não estruturados de código HTML em formato de dados estruturados, como dados tabulares em uma planilha do Excel. A raspagem da Web pode ser feita de várias maneiras, desde o uso do Google Docs até linguagens de programação. Para pessoas que não possuem nenhum conhecimento de programação ou competências técnicas, é possível adquirir dados da web usando serviços de web scraping que fornecem dados prontos para uso de sites de sua preferência.

Etiquetas HTML:

Para realizar o web scraping, os usuários devem ter um bom conhecimento de tags HTML. Pode ajudar muito saber que os links HTML são definidos usando a tag âncora, ou seja, a tag <a>, “<a href=“https://…”>O link precisa estar aqui </a>”. Uma lista HTML é composta por <ul> (não ordenada) e <ol> (ordenada). O item da lista começa com <li>.

As tabelas HTML são definidas com <Table>, a linha como <tr> e as colunas são divididas em dados como <td>;

  • <!DOCTYPE html> : Um documento HTML começa com uma declaração de tipo de documento
  • A parte principal do documento HTML em texto simples e não formatado é definida pelas tags <body> e </body>
  • Os cabeçalhos em HTML são definidos usando as tags de cabeçalho de <h1> a <h5>
  • Os parágrafos são definidos com a tag <p> em HTML
  • Um documento HTML inteiro está contido entre <html> e </html>

Usando BeautifulSoup na raspagem:

Ao raspar uma página da Web usando o BeautifulSoup, a principal preocupação é identificar o objetivo final. Por exemplo, se você deseja extrair uma lista de uma página da Web, é necessária uma abordagem passo a passo:

  • O primeiro e mais importante passo é importar as bibliotecas necessárias:

#importar a biblioteca usada para consultar um site

importar urllib2

#especifique a url wiki = “https://”

#Consulte o site e retorne o html para a variável 'page'

página = urllib2.urlopen(wiki)

#importe as funções Beautiful soup para analisar os dados retornados do site

de bs4 importe BeautifulSoup

#Parse o html na variável 'page' e armazene-o no formato Beautiful Soup

sopa = BeautifulSoup(página)

  • Use a função “embelezar” para visualizar a estrutura aninhada da página HTML
  • Trabalhando com tags de sopa:

Soup<tag> é usado para retornar conteúdo entre a tag de abertura e fechamento, incluindo a tag.

  1. Em[30]:sopa.título

Out[30]:<title>Lista de presidentes na Índia até 2010 – Wikipedia, a enciclopédia livre</title>

  1. sopa.<tag>.string: Retorna a string dentro de uma determinada tag
  2. Em [38]:sopa.título.string
  3. Out[38]:u 'Lista de Presidentes na Índia e no Brasil até 2010 na Índia – Wikipedia, a enciclopédia livre'
  4. Encontre todos os links nas tags <a> da página: Marque um link usando a tag “<a>”. Então, vá com a opção sopa.a e ela deve retornar os links disponíveis na página da web. Vamos fazer isso.
  5. Em [40]:sopa.a

Out[40]:<a id="top"></a>

  • Encontre a tabela certa:

Como uma tabela para obter informações sobre os presidentes da Índia e do Brasil até 2010 está sendo pesquisada, é importante identificar primeiro a tabela correta. Aqui está um comando para rastrear informações contidas em todas as tags de tabela.

all_tables= sopa.find_all('table')

Identifique a tabela correta usando o atributo “class” da tabela que precisa filtrar a tabela correta. Depois disso, inspecione o nome da classe clicando com o botão direito do mouse na tabela necessária da página da web da seguinte forma:

  1. Inspecionar elemento
  2. Copie o nome da classe ou encontre o nome da classe da tabela correta na saída do último comando.

right_table=soup.find('table', class_='wikitable sortable plainrowheaders')

tabela_direita

É assim que podemos identificar a tabela certa.

  • Extraia as informações para o DataFrame: é necessário iterar em cada linha (tr) e, em seguida, atribuir cada elemento de tr (td) a uma variável e adicioná-lo a uma lista. Vamos analisar a estrutura HTML da tabela da tabela. (extrair informações para o cabeçalho da tabela <th>)

Para acessar o valor de cada elemento, é necessário utilizar a opção “find(text=True)” com cada elemento. Finalmente, há dados no dataframe.

Existem várias outras maneiras de rastrear dados usando “BeautifulSoup” que reduzem os esforços manuais para coletar dados de páginas da web. O código escrito em BeautifulSoup é considerado mais robusto do que as expressões regulares. O método de web scraping que discutimos usa as bibliotecas “BeautifulSoup” e “urllib2” em Python. Esse foi um breve guia para iniciantes para começar a usar Python para web scraping.

Fique atento ao nosso próximo artigo sobre como o web scraping afeta o crescimento da sua receita.

Planejando adquirir dados da web para ciência de dados? Nós estamos aqui para ajudar. Deixe-nos saber sobre suas necessidades.