Como raspar dados em 5 etapas fáceis
Publicados: 2020-02-17Com que frequência você precisa extrair dados de um site para o seu trabalho e parece muito trabalhoso? Esta postagem do blog ensinará como extrair dados em 5 etapas fáceis.
Este post foi escrito para profissionais de software que precisam extrair dados de páginas da Web ou PDFs e desejam que o processo seja o mais rápido e indolor possível. Existem muitas maneiras de extrair dados, mas este artigo se concentrará em alguns dos métodos mais populares usados por desenvolvedores profissionais: XPath, Expressões Regulares, Beautiful Soup (BSA), Scrapy, Python Requests Library (PRL) e Selenium Webdriver. Essas ferramentas de raspagem podem ser facilmente instaladas com as instruções fornecidas para cada uma. Uma tabela resumindo essas ferramentas está incluída abaixo, descrevendo seus prós/contras e links para obter mais informações sobre elas, quando aplicável. A tabela inclui alguns outros métodos não tão populares que eu também tentei e estão incluídos para completar.
A extração de dados em um site pode ser feita em qualquer idioma. Neste artigo, vou demonstrar como raspar dados usando Python porque é muito fácil de instalar e bastante fácil de aprender, especialmente se você já conhece outra linguagem de programação, pois a sintaxe é semelhante a Java, C e PHP. O Python oferece suporte a várias bibliotecas para extrair dados descritos na tabela. A raspagem é uma ferramenta que todos deveriam saber usar, pois fornece informações valiosas sobre seu mercado-alvo, concorrentes e/ou clientes.
A raspagem da Web pode ajudá-lo a extrair diferentes tipos de dados. Você pode rastrear listagens de imóveis , dados de hotéis ou até mesmo dados de produtos com preços de sites de comércio eletrônico escrevendo algumas linhas de código. Mas se você for rastrear a web e extrair dados, precisará cuidar de algumas coisas. É importante certificar-se de que os dados extraídos estejam em um formato utilizável. Seu código pode extrair dados de vários sites. Os dados extraídos são limpos e não fornecem resultados errôneos ao executar algoritmos. Dito isso, se você quiser escrever seu código ou criar um pequeno projeto de raspagem da web para rastrear dados de sites, poderá fazê-lo em cinco etapas simples.

Como raspar dados de 5 maneiras fáceis
1. Escolha uma linguagem de programação ou ferramenta para extração de dados
“Um homem é tão bom quanto suas ferramentas”. Portanto, você precisa escolher suas ferramentas para raspagem na web de uma maneira que atenda às suas necessidades. Embora alguns softwares prontos para uso possam parecer fáceis de usar, eles podem não permitir que você faça muitas alterações de configuração. Ao mesmo tempo, muitas ferramentas podem não ter um plugin para salvar os dados que você raspou em um banco de dados ou na nuvem. Quando se trata de linguagens de programação que são usadas para raspagem de dados hoje, há Node.js, Python, Ruby e muito mais. Mas entre eles, o Python é o mais popular graças à sua curva de aprendizado mais fácil, sintaxe simples, disponibilidade de várias bibliotecas externas e a linguagem ser de código aberto.
Existem várias bibliotecas como BeautifulSoup e Scrapy que podem ser usadas para rastrear páginas da Web, criar aranhas de rastreamento da Web e executar trabalhos de raspagem em intervalos de tempo específicos. Python permite imensa flexibilidade quando se trata de integrar outros sistemas com seu mecanismo de raspagem. Você pode salvar facilmente seus dados raspados em sua máquina local, em bancos de dados, no S3 Storage ou até mesmo despejá-los em um arquivo do Word ou Excel .
2. Raspagem de uma única página da Web e análise dos componentes
Antes de extrair informações de produtos de, digamos, mil páginas de produtos na Amazon , você precisa acessar a página e obter toda a página HTML para analisá-la e decidir sobre uma estratégia. Os dados em páginas HTML podem residir em pares de valores-chave específicos em tags ou no texto em tags. Você pode usar bibliotecas como BeautifulSoup para especificar de qual tag exata você deseja extrair dados em cada página da Web e, em seguida, executar o código em um loop. Dessa forma, para cada página da Web de um único produto, seu código será executado e extrairá as mesmas informações - digamos, detalhes de preço.
3. Decidir sobre uma estratégia de limpeza e armazenamento de dados
Mesmo antes de começar a extrair os dados, você deve decidir onde armazenará os dados. Isso ocorre porque a forma como você processa os dados dependerá de onde você os armazenará. Existem várias opções disponíveis. Você pode escolher entre bancos de dados NoSQL e SQL, dependendo se os dados que você está raspando serão estruturados ou não estruturados. Para dados não estruturados, você pode escolher bancos de dados SQL, pois pode armazenar os dados em linhas que consistem em um conjunto de atributos. Para dados não estruturados, onde não há atributos definidos, você pode optar por bancos de dados NoSQL. Em termos de qual banco de dados salvar os dados, para SQL você pode escolher MySQL ou Postgres. O Amazon RDS oferece bancos de dados na nuvem onde você pode armazenar seus dados e pagar com base no uso.
Para NoSQL, você pode escolher uma de suas soluções totalmente gerenciadas e extremamente rápidas, como DynamoDb ou ElasticSearch . Diferentes bancos de dados têm vantagens que oferecem recuperação rápida, alguns oferecem armazenamento mais barato por TB . O banco de dados escolhido depende do seu caso de uso específico e, portanto. Alguma pesquisa necessária sobre isso antes de decidir sobre um. Caso precise armazenar imagens e vídeos raspados grandes, você pode usar AWS S3 ou Glacier . Este último usado quando você deseja armazenar grandes quantidades de dados em um formato arquivado. Você não precisaria acessar com frequência enquanto o primeiro é a solução mais usada. Isso funciona como algo como um disco rígido online. Você pode criar pastas e salvar arquivos nelas.

4. Crie uma lista de páginas da Web ou escreva um Regex para extração de dados
Embora você possa testar seu código em uma única página da Web, você deve estar querendo rastrear dezenas ou centenas de páginas por causa das quais está realizando este projeto. Normalmente, se você for rastrear algumas páginas da Web, poderá salvar os links em uma matriz e fazer um loop sobre ela ao raspar as páginas. Uma solução melhor e mais usada é usar um regex . Simplificando, é uma maneira programática de identificar sites com estruturas de URL semelhantes.
Por exemplo, talvez você queira rastrear dados de produtos de todos os laptops na Amazon. Agora você pode ver que todas as URLs começam com “ www.amazon.com/laptop/ <laptopModelNo>/prodData”. Você pode replicar esse formato usando regex para que todos esses URLs sejam extraídos e sua função de raspagem da web seja executada apenas nesses URLs . E nem todos os URLs no site da Amazon. Caso você tenha muitas páginas da Web para rastrear, recomendamos que você use uma abordagem de processamento paralelo para rastrear cerca de dez páginas da Web a qualquer momento . Se você estiver raspando páginas da Web e extraindo links delas e, em seguida, raspando as páginas da Web às quais esses links levam, poderá usar uma abordagem semelhante a uma árvore para rastrear várias páginas filhas decorrentes de uma página da Web raiz ao mesmo tempo.


5. Escreva o código e teste
Tudo o que discutimos até agora foi a preparação. Para o ato final de executar o código e fazer o trabalho. O código de raspagem da Web raramente funciona exatamente da maneira que você espera. Isso ocorre porque nem todas as páginas da Web que você está tentando rastrear teriam a mesma estrutura. Por exemplo, você executa seu código de raspagem em 100 páginas de produtos e descobre que apenas 80 delas foram descartadas. A razão por trás disso é que 20 páginas podem estar esgotadas e sua estrutura de página da Web é diferente. Essas exceções não serão consideradas quando você escrever o código. Mas depois de algumas iterações, você pode fazer as alterações necessárias. E extraia dados de todas as páginas da web que você precisa.

Métodos alternativos de raspagem de dados
Use a função Filtro do Excel para extrair dados
Esta é a maneira mais fácil de extrair dados de qualquer página da web. Não requer ferramentas extras, exceto o Excel, e não deixará pegadas no site de destino ou no sistema, ou seja, nenhuma chamada de API é feita, nenhum cookie é definido etc. Se você tiver acesso a um PC/Mac com o Excel instalado, isso é de longe a maneira mais fácil de raspar dados.
Como funciona
No Excel, abra uma nova planilha e escreva a URL do seu site de destino na primeira célula (por exemplo, http://www.joes-hardware-store.com/). Na próxima célula, insira uma fórmula HTML ou XPath Data Filter (consulte a tabela abaixo para a fórmula XPath Data Filter usada neste exemplo) que extrairá dados de sua página da Web de destino. Se você quiser extrair várias colunas de dados, repita a Etapa 1 para cada coluna de dados e coloque-as lado a lado.
Como obter filtros de dados XPath no Excel
No Excel, clique em Arquivo > Opções > Avançado e vá para a seção Exibir. Marque a caixa ao lado de "Mostrar guia do desenvolvedor na faixa de opções" e clique em OK. Isso é mostrado na captura de tela 1 abaixo:
No Excel, clique em Desenvolvedor > Referência, role para baixo e encontre o Microsoft XML Document 3.0 (como mostrado na captura de tela 2 abaixo):
Clique em MSXML3 Apress e clique em OK (como mostrado na captura de tela 3 abaixo):
Agora que temos a Referência MSXML3 instalada, vamos tentar. No Excel, insira o URL da página da Web de destino na célula A1 e, em seguida, uma fórmula de Filtro de Dados XPath na célula B1 (por exemplo, para obter o preço do item "123" em uma página da Web, coloque a fórmula de Filtro de Dados XPath na célula B1, conforme mostrado em capturas de tela 4 e 5 abaixo):
Agora, copie o conteúdo da célula B1 para todas as células restantes usando o atalho CTRL+C do Excel. Isso é mostrado na captura de tela 6 abaixo:
Copie o URL da página da Web de destino (na célula A1) na barra de endereços do Excel. Pressione Enter para carregá-lo no navegador e ver seus dados aparecerem magicamente no Excel
Como você pode ver, essa é uma maneira extremamente eficiente de extrair dados. Não há nenhuma pegada no site de destino ou no seu sistema, ou seja, nenhuma chamada de API é feita, nenhum cookie está sendo definido etc.
Use a função Text-to-Columns no Microsoft Word para separar dados por coluna
Esse método é um pouco mais complicado que o primeiro, mas pode ser usado para extrair dados de qualquer site que tenha colunas claramente definidas. Requer MS Word e Excel, além de algumas ferramentas extras descritas abaixo. A boa notícia é que esse método deixa uma pegada no seu site de destino, portanto, se você estiver raspando sites para fins de marketing e quiser evitar a detecção, esse método não é para você.
Como funciona
No MS Word, crie um novo documento, por exemplo, Joe's Hardware Store Product Listing Scraping Tool e copie/cole sua página da web de destino na caixa de texto (veja a captura de tela 1 abaixo). Selecione a função Goto no MS Word pressionando CTRL + G e digite exatamente <<!DOCTYPE HTML [ENTER]. Isso é mostrado na captura de tela 2 abaixo:
Selecione a função Executar no MS Word pressionando ALT + F5 (como mostrado na captura de tela 3) e você deverá ver algo semelhante a isto (veja a captura de tela 4 abaixo):
No Excel, selecione Filtros > Texto para Colunas, conforme mostrado na captura de tela 5 abaixo:
Selecione Delimitado e escolha seu separador delimitado no menu suspenso (para este exemplo, estamos usando Vírgula, que é selecionada por padrão).
Agora, clique em Avançar e defina a localização das “vírgulas”, ou seja, separe seus dados da web em colunas (por exemplo, estou usando “,” como meu separador). Em seguida, clique em Avançar e defina como você deseja que o Excel trate as células vazias, ou seja, ignore-as ou substitua-as por um valor em branco (para este exemplo, vamos defini-lo como “ignorar valores vazios”). Em seguida, clique em Concluir para concluir a função Text-to-Columns.
Se sua página da web de destino não tiver colunas claramente definidas, você pode querer defini-la como “Substitute Values” conforme mostrado na captura de tela 6 abaixo:
Como você pode ver na captura de tela 7 acima, meus dados foram separados com sucesso em colunas individuais de texto e agora posso copiá-los / colá-los facilmente em outro local no meu computador.
Este método é particularmente útil para extrair dados de arquivos PDF que normalmente possuem cabeçalhos de coluna claramente definidos. Isso economizará muito tempo se seu objetivo for extrair automaticamente dados de vários arquivos PDF usando macros do Excel, porque agora você pode usar o mesmo modelo do MS Word repetidamente para criar rapidamente vários documentos para cada arquivo PDF. 3. Use o Editor VBA do MS Excel para extrair dados usando
Para este método, vamos usar uma ferramenta chamada xvba que pode ser baixada daqui e funciona como uma API (Application Program Interface). A boa notícia é que você não precisa escrever nenhum código. A má notícia é que você tem que digitar o HTML da sua página da web de destino, ou seja, eu sugiro fazer isso usando o MS Word porque isso forçará você a realmente dividir sua página da web em seus componentes (veja a captura de tela 1 abaixo).
Os números entre colchetes são células individuais em uma planilha onde os cabeçalhos de coluna e linha foram usados como nomes para cada campo de dados. Eles agem como variáveis, ou seja, são tratados como texto pelo Excel e serão alterados de acordo com a estrutura da planilha (por exemplo, se você selecionar uma coluna diferente para filtrar os dados).
Use IMPORTXML nas planilhas do Google
Ao usar IMPORTXML para extrair dados de uma página da Web, a primeira etapa é abrir o Planilhas Google . O segundo passo é ir em Ferramentas > Editor de Scripts. A terceira etapa é copiar/colar o código HTML do seu site de destino na caixa de texto, conforme mostrado na captura de tela 7 abaixo:
Como você pode ver na captura de tela 8 acima, meus dados foram separados com sucesso em colunas individuais de texto e agora posso copiá-los / colá-los facilmente em outro local no meu computador. Usamos esse método no passado para extrair dados do Facebook e do Twitter para uma campanha de marketing online. Também é uma boa maneira de extrair dados de sites que usam AJAX quando você não deseja usar o comando GOTO.
Use IMPORTHTML no Planilhas Google
Este método é semelhante ao método número 3, mas em vez de usar IMPORTXML , vamos usar IMPORTHTML . O primeiro passo é abrir o Planilhas Google . O segundo passo é ir em Ferramentas > Editor de Scripts. A terceira etapa é copiar/colar o código HTML do seu site de destino na caixa de texto.
Usando extensões do Chrome
Você pode extrair dados da Web usando extensões do Chrome, como Data Scraper e Save To CSV. Como existe uma versão gratuita e paga das extensões do chrome (Data Scraper), sugiro ter as duas para ver qual funciona melhor para você.
Conclusão
Raspar até algumas centenas de páginas (enquanto garante alguns segundos de intervalo entre cada execução). Raspar um site uma vez por mês funcionaria bem com uma solução DIY escrita em Python. Mas caso você esteja procurando uma solução DaaS de nível empresarial, nossa equipe da PromptCloud fornece uma solução de ponta a ponta onde você nos fornece o requisito e entregamos os dados que você pode conectar e usar.
Infraestrutura, gerenciamento de proxy, garantindo que você não seja bloqueado ao extrair dados. Executando o mecanismo de raspagem em uma frequência regular para atualizar os dados. Também fazemos alterações para acomodar as alterações feitas na interface do usuário do site em questão. Tudo é tratado em nossa solução totalmente gerenciada . Este é um serviço baseado em nuvem pay-per-use. Isso atenderá a todos os seus requisitos de raspagem da web. Se você está lidando com uma startup, uma multinacional ou precisa de dados para seu trabalho de pesquisa. Temos soluções de raspagem de dados para todos.
