Coleta de dados web
![]() | As referências deste artigo necessitam de formatação. (Julho de 2016) |
A coleta de dados web, ou raspagem web, é uma forma de mineração que permite a extração de dados de sites da web convertendo-os em informação estruturada para posterior análise. O tipo mais básico de coleta é o download manual das páginas, copiando e colando o conteúdo, e isso pode ser feito por qualquer pessoa. Contudo, essa técnica geralmente é feita através de um software que simula uma navegação humana por diversos sites, extraindo informações específicas. É um campo com ativa evolução que compartilha um objetivo comum com a visão da web semântica, uma iniciativa ambiciosa que ainda requer avanços no processamento de texto, compreensão semantical, inteligência artificial e interação humano-computador. A coleta de dados web é muito semelhante à indexação web (utilizado pela maioria dos motores de busca), mas a motivação final é muito diferente. A indexação web é usada para ajudar a tornar os motores de busca mais eficientes, já a coleta de dados é tipicamente usada para diferentes razões, como comparação de preços online, monitoramentos meteorológicos, pesquisas de mercado, coleta de dados governamentais, monitoramento de dados e, em alguns casos, roubo.
Motivação[editar | editar código-fonte]
Cada vez mais a tecnologia nos traz benefícios e nos dias atuais os negócios estão extremamente tecnológicos, sempre buscando por melhorias e reduzindo gastos de tempo e dinheiro. Muitas vezes o acesso aos dados não é fácil. Por mais que se desejasse que tudo estivesse disponível no formato da nossa preferência, dados são divulgados de forma diferente na internet. E se você quiser combiná-los com outros dados ou explorá-los de maneira independente? Para se extrair alguns dados de websites de maneira manual, ou seja copiando e colando, muito esforço será necessário e muito tempo será perdido. Com o uso automatizado da coleta de dados web essa prática poupará tempo, esforço e por consequência dinheiro. Existem diversas motivações para se praticar a coleta de dados web. Algumas pessoas realizam a coleta para arquivar informações de um website para poder se ter acesso offline ao mesmo posteriormente, outras utilizam a técnica para testar seu próprio website em busca de links quebrados e infelizmente existem casos de uso desonesto, como por exemplo cópias ilegais de conteúdo. Alguns exemplos do uso da coleta de dados são:
- O comércio eletrônico usa a coleta de dados para monitorar os preços de empresas concorrentes
- Advogados utilizam para ver relatórios de julgamentos passados para referências futuras
- Recrutadores utilizam para coletar perfis de pessoas
- Empresas de mídia utilizam para avaliar conteúdos de trend topics e hashtags para coletar informações
- Jornalistas utilizam para recolher informações sobre acontecimentos para facilitar as reportagens
Funcionamento[editar | editar código-fonte]

Os scripts e aplicativos de coleta de dados vão simular uma pessoa navegando normalmente em um site através de um navegador. Com estes scripts/softwares o usuário pode se conectar a um site e solicitar uma página, exatamente como um navegador faria. O servidor web irá enviar de volta a página requisitada e então os coletores processam as páginas de dados, que são não estruturadas ou semiestruturadas, e convertem os dados em um formato estruturado. Uma vez que os dados estão em um formato estruturado, o usuário pode manipula-los e analisa-los com facilidade.
Alternativas[editar | editar código-fonte]
Existem algumas alternativas para se fazer a coleta de dados web, como
Alternativa | Definição | Prós | Contras |
Usar um serviço online de coleta | Existe serviços que realizam a extração dos dados da web que não necessitam ser baixados e funcionam online | Tem a vantagem de extrair os dados do site de maneira automatizada, com algumas exceções onde o usuário precisa definir regras para começar a extração. Possui a vantagem de não exigir conhecimentos técnicos avançados | Serviço com funcionalidades limitadas |
Usar um software para a coleta | É possível utilizar softwares de desktop ou até mesmo extensões de browsers, como o Mozilla Firefox e o Google Chrome, para realizar a extração dos dados | Possui a mesma facilidade de uso que os serviços online mas oferece maior flexibilidade para se obter os dados | É uma alternativa para processos mais manuais, não automatizados. Possuem chances de serem bloqueados pelo website onde está sendo coletado os dados |
Programar seu próprio algoritmo de coleta | É possível escrever um algoritmo de coleta em diversas linguagens de programação, sendo os mais comuns Python, Ruby e Java | Oferta maior flexibilidade que as outras duas alternativas pois é possível criar uma extração completamente adaptável as necessidades do usuário | Requer um alto nível de conhecimento e manutenção constante para o software, o que requer tempo e dinheiro |
Técnicas[editar | editar código-fonte]
Algumas técnicas mais comuns de coletas de dados são as seguintes
- Cópia humana: As vezes a melhor maneira de realizar a coleta de dados de determinadas páginas web é através da cópia manual, também conhecida como "copiar e colar". Essa técnica é a mais eficiente quando a página a qual os dados serão coletados possui um nível alto de proteção contra os softwares de coleta.
- "Grepping" de texto e correspondência de expressões regulares: Uma abordagem simples porém poderosa que utiliza o comando grep do UNIX ou realiza correspondências de expressões regulares que podem ser em diversas linguagens de programação, como Python e Perl.
- Programação HTTP: Páginas web dinâmicas e estáticas podem ser acessadas através de solicitações HTTP para o servidor web remoto usando programação de socket.
- Análise DOM: Incorporando um navegador, como o Internet Explorer ou o Mozilla, essa técnica pode recuperar o conteúdo dinâmico gerado pelos scripts do lado do cliente. Também é possível analisar páginas web em uma árvore DOM.
- Reconhecimento de anotação semântica: As páginas a qual os dados estão sendo coletados podem utilizar metadados ou marcações e anotações semânticas que podem ser usados para localizar trechos de dados específicos. Se as anotações são incorporadas na página, essa técnica pode ser considerada um caso especial da análise DOM. Em outro caso, as anotações, que estão organizadas em uma camada semântica, são armazenadas e gerenciadas separadamente das páginas web, de modo que os coletores podem recuperar o esquema de dados a partir desta camada antes de coletar os dados das páginas.
- Softwares de coleta: Existem muitas ferramentas de software disponíveis que podem ser usados para personalizar soluções de coleta de dados web. Estes softwares podem tentar reconhecer automaticamente a estrutura de dados de uma página ou fornecer uma interface de gravação que remove a necessidade de escrever o código manualmente. Também é possível se ter algumas funções de criação de scripts que podem ser utilizados para extrair e transformar o conteúdo, com a opção de armazenar os dados coletados em bancos de dados locais. Alguns softwares também podem ser usados para extrair os dados diretamente, a partir de uma API.
- Analisadores com visão computacional: Há esforços utilizando aprendizagem de máquina e visão computacional afim de identificar e extrair informações de páginas web pela interpretação visual da mesma, assim como uma pessoa faria.
Coletas maliciosas e aspectos legais[editar | editar código-fonte]
A prática da coleta de dados web tem atraído muita controvérsia porque os termos de uso para alguns sites não permitem certos tipos de mineração de dados. A coleta maliciosa é um roubo sistemático da propriedade intelectual na forma de dados acessíveis em um website. Infelizmente, algumas pessoas não se preocupam com termos e condições e extraem sistematicamente grandes quantidades de dados para ganho pessoal sem que tenha permissão para isso. Alguns exemplos de coletas maliciosas são:
- Coleta de endereços de e-mail
- Obtenção de perfis de usuários em redes sociais ou fóruns
- Detecção de atualizações em sites da concorrência
- Plágio de conteúdos, tais como notícias, artigos, blogs, informações médicas, informações financeiras, etc
Como um exemplo real, no Brasil, podemos citar o caso de uma empresa de recrutamento online acusada e condenada por concorrência desleal ao coletar dados de clientes de outra empresa. Portanto, além de estar ciente de todos os aspectos legais do site que se quer realizar a extração é importante estar atento para não violar nenhuma das seguintes questões:
- Direitos Autorais
- Propriedade Intelectual
- Marca Registrada
- Plágio
- Denegreço de Imagem
- Entre outras
Apesar dos desafios legais, essa técnica promete tornar-se uma maneira popular de coleta de informações.
Medidas restritivas à coleta[editar | editar código-fonte]
Evitar os ataques e coletas indevidas está cada vez mais difícil pois é complicado distinguir os coletores de usuários legítimos, mas é possível tomar algumas medidas para impedir ou diminuir esses ataques, como:
Medida | Descrição |
---|---|
Bloquear IP's que possuam excesso de tráfego | Scripts de coleta de dados fazem requisições com muito mais rapidez que pessoas. Limitando o acesso a IP's que possuem vários pedidos em um curto espaço de tempo pode evitar o problema |
Bloquear fontes maliciosas já conhecidas | É sempre bom manter uma lista de controle no Firewall para se ter uma base de proteção, já que alguns scripts utilizam botnets e nós Tor para encobrir sua verdadeira localização e identidade. Ao se conhecer alguns destes botnets ou nós Tor é muito importante os colocar na lista negra do Firewall |
Utilizar CAPTCHA | Este tem sido o método mais comumente utilizado porque é simples de integrar e pode ser eficaz, pelo menos no início. O problema é que o CAPTCHA pode ser burlado com um pouco de trabalho e, mais importante, eles são um incômodo para os usuários, podendo afasta-los |
Exigir login do usuário | Exigir que o usuário faça login no website para poder ver o conteúdo do mesmo é uma boa maneira de evitar a coleta dos dados. Será mais fácil identificar e banir contas suspeitas do que apenas bloquear endereços de IP mas possui o mesmo problema do CAPTCHA, é um incômodo para os usuários |
Exigir a habilitação de Cookies | Alguns scripts fracos de coleta poderão ser evitados com os cookies. Se o script habilitar o uso de cookies ficará mais fácil rastrear suas ações no website e tomar as devidas medidas necessárias |
Utilizar JavaScript + Ajax | Alguns scripts não rodam código em JavaScript, tornando os dados inacessíveis a eles. |
Utilizar imagens ou conteúdo flash no website | Alguns scripts de coleta extraem somente dados em formato de texto, logo, ter conteúdo em um formato diferente dificultaria a extração das informações |
Atualizar constantemente as tags HTML das páginas web | Desse modo seria necessário a atualização constante dos scripts de coleta para se obter os dados de maneira correta |
Analisar os cabeçalhos HTTP, especialmente o User-Agent | Alguns scripts de coleta utilizam não possuem um nome de User-Agent ou possuem algum que torna fácil os identificar e bloquear |
Além das medidas citadas acima, é sempre bom verificar as ações tomadas pelos usuários nas páginas do website. Por exemplo, quando algum browser solicita uma página, ele também solicita e realiza downloads de imagens e CSS, já coletores estão apenas interessados no conteúdo e irão solicitar somente o HTML. Se isso acontecer por um longo período de tempo, com certeza esse usuário está realizando a coleta dos dados. Outra opção para impedir uso indevido de imagens seria colocar uma marca d'água para identificar a quem o conteúdo pertence.
Exemplos de ferramentas de coleta[editar | editar código-fonte]
- Apache Camel
- Archive.is
- Automation Anywhere
- Convertigo
- crawler4j
- cURL
- Data Toolbar
- Diffbot
- Diggernaut
- Firebug 2.23
- FMiner
- Greasemonkey
- Helium
- Heritrix
- HtmlUnit
- HTTrack
- iMacros
- Import.io
- Octoparse
- Jaxer
- Mechanize
- Mozenda
- Node.js
- nokogiri
- OutWit Hub
- PhantomJS
- ScraperWiki
- Scrapy
- Screen Scrapy
- Selenium
- SimpleTest
- UiPath
- Watir
- Web Content Extractor (WCE)
- WebHarvy
- Web Scraper
- Wget
- Wireshark
- WSO2 Mashup Server
- Yahoo! Query Language (YQL)
Ver também[editar | editar código-fonte]
Referências[editar | editar código-fonte]
- HTML Scraping Consultado em 06/07/16
- Web Crawling: Data Scraping vs. Data Crawling Consultado em 06/07/16
- Data Scraping: Introdução à técnica de extração de dados web Consultado em 05/07/1016
- Scrapers e Crawlings: Robôs da internet e suas utilidades Consultado em 05/07/16
- Web data extraction Consultado em 06/07/16
- Alternativas para realizar web scraping Consultado em 06/07/16
- Web Scraping Definition Consultado em 06/07/16
- Web Scraping Consultado em 07/07/16
- Scraping defined (also data scraping, web scraping or screen scraping) Consultado em 05/07/16
- Coleta de dados na internet ainda precisa ser mais debatida no Brasil Consultado em 07/07/16
- Cómo evitar que alguien se apropie de los contenidos de nuestra página web Consultado em 07/07/16
- Scraping definition Consultado em 05/07/16
- Web Scraping - Data Collection or Illegal Activity? Consultado em 07/07/16
- Desvendando 'Data Scraping': Entenda como raspar dados pode facilitar o trabalho jornalístico Consultado em 07/06/16
- What you need to know about web scraping: How to understand, identify, and sometimes stop Consultado em 06/07/16
- IMPERVA, ‘Detecting and Blocking Site Scraping Attacks’ - http://www.imperva.com/docs/wp_detecting_and_blocking_site_scraping_attacks.pdf (2014)
- M. P. Katia, I. T. Maria - 'COLETA DE DADOS EM PLATAFORMAS DE REDES SOCIAIS: ESTUDO DE APLICATIVOS' http://rabci.org/rabci/sites/default/files/222-838-1-PB_0.pdf - III WPCI (2014)