1. Planeie antes de raspar
Tal como qualquer projeto, os trabalhos de web scraping são muito mais fáceis se definir uma estratégia clara antes mesmo de começar. Em primeiro lugar, por que precisa desses dados? Pode parecer uma pergunta óbvia, mas a resposta é fundamental para determinar que informações deve recolher.
Em seguida, onde vai obter as informações? A ferramenta de extração deve ser adequada aos sites que terá de visitar; por isso, analisar as suas fontes de dados irá ajudá-lo a criar ou adquirir o programa certo para o trabalho.
Pergunta três: como vai utilizar as informações recolhidas? Pode processá-las você mesmo, utilizar software ou até mesmo encaminhá-las para um fluxo de trabalho complexo. A resposta será o seu primeiro passo para decidir a estrutura e o formato de ficheiro dos dados recolhidos.
Há muitas outras questões e ideias que terá de esclarecer, a maioria das quais depende em grande medida do que pretende alcançar. Uma coisa é certa: o ditado «medir duas vezes, cortar uma vez» aplica-se perfeitamente à extração de dados da Web.
2. Aja de forma mais humana
Se quiser saber se um visitante do site é um ser humano ou um bot, basta observar o seu comportamento. Os bots movem-se à velocidade da luz e nunca interagem com a página, a menos que recebam instruções em contrário. Por isso, são fáceis de identificar e bloquear.
Para ajudar o scraper a evitar ser detetado, tem de lhe ensinar a agir mais como um visitante normal, um ser humano. O que é fantástico nisto é que as pessoas agem de formas muito diversas, pelo que tem bastante liberdade na programação. Aqui estão algumas ações que sugerimos que adicione:
- Insira intervalos aleatórios de inatividade, como se um utilizador estivesse a ler o conteúdo da página. Um atraso de 5 a 10 segundos funciona perfeitamente.
- Navegue pelas páginas seguindo uma estrutura em árvore. Se estiver a extrair várias páginas secundárias, passe sempre pela página principal ao avançar. Isto imitará o comportamento de uma pessoa que clica numa página, volta atrás, clica na seguinte e assim por diante.
- Faz com que o bot clique em coisas aleatórias de vez em quando. Isso é algo que toda a gente faz, e não só eu, certo?
De qualquer forma, a razão pela qual o seu bot tem de agir de determinada forma é porque o site pode estar a monitorizar e a registar a sua atividade. Mas e se o site não conseguisse rastrear o bot? Leia o ponto seguinte para obter a resposta.
3. Alterne os seus proxies
Usar um proxy para garantir que o seu IP real não seja bloqueado é algo bastante óbvio. O mesmo se aplica à utilização de um proxy de uma localização geográfica específica para aceder a conteúdos com restrições geográficas. Mas os proxies podem fazer muito mais por si com as ferramentas certas!
Neste momento, a ferramenta de que precisa é um servidor para alternar o seu conjunto de proxies. Com ele, cada pedido que enviar é atribuído a um endereço IP aleatório dentro do conjunto e enviado para o destino. Desta forma, pode extrair dados de um site quantas vezes quiser e cada pedido parecerá ter vindo de um local e de uma pessoa diferentes.
Além disso, os proxies rotativos garantem que, caso um endereço IP seja bloqueado, não fique bloqueado até alterar manualmente os proxies. Uma solicitação pode falhar, mas as outras não. Uma boa ferramenta também tentará novamente qualquer tentativa falhada; por exemplo, a WebScrapingAPI repete as chamadas de API falhadas para garantir que não haja lacunas na sua base de dados.
Para obter os melhores resultados possíveis, recomenda-se utilizar proxies rotativos residenciais. Os IPs residenciais são menos suscetíveis de serem detetados ou bloqueados e, ao alterná-los, torna-se ainda mais difícil detetar o scraper. Tenha em mente que, por vezes, isto pode ser um exagero. Se não estiver a enfrentar medidas anti-bot complexas, os proxies rotativos de centro de dados podem cumprir a mesma função com igual eficácia e a um custo mais baixo.
4. Utilize um navegador sem interface gráfica
Um navegador sem interface gráfica é igual a um navegador normal, com a diferença de que não possui uma interface gráfica. Para navegar na Internet com um navegador deste tipo, terá de utilizar uma interface de linha de comandos.
Deve, sem dúvida, incluir um navegador sem interface gráfica no seu fluxo de trabalho de web scraping, e os sites dinâmicos são a razão para isso. Atualmente, muitos sites utilizam JavaScript para oferecer uma melhor experiência de utilizador aos visitantes. O exemplo mais simples disso é o redimensionamento dos elementos da página para se adaptarem bem à resolução do ecrã do visitante.
O problema é que o código HTML em questão está oculto por trás de código JavaScript. Para aceder a ele, é necessário executar o JavaScript. Um scraper comum não consegue fazer isso, mas todos os navegadores conseguem.
Assim, sem um ambiente de navegador, a ferramenta de extração não conseguirá recolher dados de nenhum site que utilize JavaScript, o que, neste momento, é a maioria, ou pelo menos a maioria dos que importam.
Se estiver a criar um scraper do zero, recomendo que experimente o Puppeteer; aqui estão alguns detalhes sobre o que ele faz e como utilizá-lo.
5. Alternar os cabeçalhos User-Agent
User-Agent é o nome de um cabeçalho de pedido HTTP que indica ao site que está a visitar qual o navegador e o sistema operativo que está a utilizar. De certa forma, os sites utilizam este cabeçalho para saber mais sobre quem os visita. É excelente para fins de análise e, além disso, é útil para detetar bots.
Eis um exemplo de como pode ser uma string de agente de utilizador:
Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0
Existem três situações principais que deve evitar:
- Não ter qualquer agente de utilizador. A maioria dos scrapers não utiliza um, o que é suspeito e uma boa forma de revelar que são bots. Certifique-se de que envia cabeçalhos com um aspeto normal em cada pedido.
- Ter um user-agent desatualizado. Com cada nova atualização, os navegadores costumam alterar o cabeçalho. Assim, se a sua lista contiver um user-agent para o Mozilla, mas este tiver sido atualizado e alterado, o site que visitar poderá perceber que algo não está bem.
- Utilizar o mesmo cabeçalho em cada pedido. Poderia utilizar o user-agent normal do seu navegador, mas isso resultaria em centenas de pedidos diferentes, provenientes de IPs distintos, mas com exatamente a mesma impressão digital. É um indício muito evidente.
Eis uma dica extra sobre o assunto: experimente utilizar o user-agent do Googlebot. É claro que qualquer site deseja ser indexado, por isso deixam os rastreadores do Google fazerem o seu trabalho. Mas atenção: os bots do Google também têm IPs e comportamentos específicos, pelo que o user-agent, por si só, não é garantia de sucesso.
6. Adicionar funcionalidades anti-CAPTCHA
Se estiver a fazer o scraping corretamente, só deverá deparar-se com CAPTCHAs em casos muito raros. No entanto, se isso acontecer, é um grande incómodo, pois pode interromper o seu scraper ou fazer com que este devolva dados falsos (o código da página do CAPTCHA).
O plano de combate ao CAPTCHA tem duas partes: prevenção e resolução. Deve concentrar-se principalmente na prevenção, pois é, de longe, a opção mais eficiente. Eis o que deve fazer:
- Utilize proxies para que pareça que os seus pedidos provêm de diferentes fontes.
- Altere os cabeçalhos das suas solicitações (especialmente o user-agent). Caso contrário, poderá continuar a ser detetado, apesar de utilizar vários endereços IP.
- Execute o código JavaScript da página. Um navegador sem interface gráfica é a melhor opção. Muitos sites apresentam CAPTCHAs a qualquer visitante que não o faça, uma vez que se trata de um comportamento invulgar.
Portanto, basicamente, siga as dicas n.º 3, n.º 4 e n.º 5.
Se o scraper continuar a encontrar problemas, vai precisar de um solucionador de CAPTCHA. Ao escolher uma ferramenta de web scraping, certifique-se de que a sua escolha inclui esta funcionalidade integrada. Caso contrário, é tecnicamente possível integrar um solucionador por conta própria, mas isso implica programação adicional e uma perda de tempo. A título informativo, a nossa API possui esta funcionalidade, embora, na verdade, não encontre muitos CAPTCHAs.
7. Criar uma lista de URLs
Quando iniciar uma tarefa de scraping, provavelmente irá compilar uma lista de URLs com informações valiosas. Eis uma sugestão: em vez de se limitar a enviar as URLs para o scraper, mantenha uma lista e assinale todos os links que já rastreou. Para maior clareza, também pode associar os dados extraídos à respetiva URL.
A razão por detrás disto é simples: se o seu computador avariar ou ocorrer algum outro imprevisto, continuará a saber quais os dados de que já dispõe, evitando assim uma nova recolha desnecessária.
O nosso conselho é que crie um script para a extração e registo de dados. Atualizar a lista manualmente implica muito trabalho repetitivo e, de qualquer forma, não conseguirá acompanhar o ritmo do bot.
8. Aprenda as estruturas das páginas
Recolher mais dados leva mais tempo, naturalmente. Por isso, uma forma de aumentar a eficiência é identificar exatamente quais as informações que o scraper deve recolher. É fácil na teoria, mas cada site e cada página web são únicos. Para reduzir o esforço e poupar tempo, é necessário aprender algumas coisas sobre a forma como as páginas-alvo estão estruturadas.
Eis como o fazer:
- Vá para a página;
- Clique com o botão direito do rato no texto pretendido e selecione «Inspecionar elemento»;
- Observe como essa informação está hierarquizada, em que classes se encontra e sob que etiqueta;
- Procure padrões estruturais noutras páginas de interesse. É provável que consiga criar um script que recolha toda a informação necessária de todo o site.
Depois de seguir estes passos, será muito mais fácil extrair apenas os detalhes de que precisa. A vantagem é que já não terá de lidar com código HTML irrelevante a sobrecarregar os seus documentos.
Compreender a estrutura é especialmente útil para extrair informações sobre produtos. As páginas de produtos num mesmo site terão todas uma estrutura semelhante, se não idêntica. Se descobrir a lógica, poderá extrair e analisar os dados muito mais rapidamente.
9. Introduzir um intervalo entre os pedidos
O objetivo de um web scraper é recolher dados mais rapidamente do que um ser humano conseguiria. Compreendemos isso, mas a velocidade tem um efeito secundário indesejado: torna evidente que os pedidos estão a ser enviados por um bot.
Lembre-se do que dissemos sobre agir como um visitante normal: se o scraper se destacar, é muito mais provável que seja bloqueado. Mas não se preocupe, basta adicionar intervalos aleatórios ao utilizar o mesmo IP para várias visitas simultâneas ou sucessivas.
Lembre-se: faça isto quando utilizar o mesmo proxy. Se estiver a alterar o IP e os cabeçalhos após cada pedido, o atraso não deverá ser necessário. No entanto, se estiver conectado com um IP específico, deve manter esse mesmo IP, o que significa que também precisará dos atrasos.
Certifique-se de que o temporizador está ligeiramente diferente, para que os intervalos sejam aleatórios. Um intervalo entre 5 e 10 segundos deve funcionar bem.
10. Armazenar páginas importantes em cache
Em alguns casos, poderá querer voltar a visitar páginas que já extraiu anteriormente para obter mais alguma informação. Em vez de fazer isso, guarde a página na cache na primeira visita e já terá todos os dados guardados.
Mesmo com o web scraper mais avançado, ainda existe a possibilidade de o bot não conseguir obter os dados à primeira tentativa e, mesmo que consiga, continuará a ser um desperdício de esforço. Basta recolher todo o código HTML de uma só vez e, depois, poderá extrair qualquer informação de que necessite a partir da versão guardada.
Por exemplo, pode armazenar em cache uma página de produto para que esteja sempre à mão. Se hoje precisar das especificações do produto, mas amanhã quiser saber o preço, os dados já estarão recolhidos, à espera de serem processados.
Mas atenção: isto funciona apenas para informações estáticas! Se quiseres saber os preços das ações, terás de continuar a extrair dados atualizados, uma vez que a versão armazenada em cache ficará desatualizada rapidamente.
11. Tenha cuidado ao iniciar sessão
Os dados de que precisa podem estar ocultos atrás de uma página de início de sessão. Vêm-me à cabeça as plataformas de redes sociais. É claro que consegue aceder a alguns fragmentos de conteúdo sem ter uma conta, mas é mais trabalhoso e pode querer aceder a algo que só é visível se fizer parte de um grupo ou de uma lista de amigos. Em suma, pode ser necessário iniciar sessão, o que acarreta alguns problemas.
Todos os utilizadores do site que possuam uma conta têm de aceitar os Termos de Serviço. Nestes termos, poderá existir uma cláusula que proíba especificamente a utilização de bots, ferramentas automatizadas ou programas de extração de dados da Web. Neste caso, a extração de dados seria claramente contrária às regras que o utilizador aceitou.
Outro ponto a ter em conta é que, embora os sites possam não estar muito atentos aos visitantes não registados, prestam mais atenção aos cookies enviados por utilizadores registados. Assim, na prática, o seu bot será alvo de maior vigilância. Um comportamento de bot óbvio ou cookies reveladores aumentam ainda mais as probabilidades de o seu scraper ser bloqueado.
O que deve fazer:
- Leia atentamente os Termos de Serviço e certifique-se de que não os está a infringir.
- Certifique-se de que está a seguir todas as outras dicas deste artigo, especialmente as relativas a proxies, comportamento humano, renderização de JS e cabeçalhos de pedido.
12. Evite causar danos ao site
A maioria dos administradores de sites não gosta de ter programas de extração de dados nos seus sites. Para alguns, os bots são um incómodo menor; para outros, representam um grande perigo. A verdade é que os hackers e outros malfeitores utilizam bots para causar problemas e danos, como bloquear sites ou tentar roubar dados confidenciais.
Mesmo que as suas intenções sejam totalmente amigáveis, pode acabar por causar problemas sem querer. Uma avalanche de pedidos simultâneos pode derrubar o servidor, por isso, eis algumas boas práticas para garantir que não deixa o caos no seu rasto:
- Reduza o número de pedidos para evitar que o site inteiro fique inoperacional;
- Leia o ficheiro Robots.txt, que deve explicar quais as ações que os bots estão autorizados a realizar. Não se trata de um documento juridicamente vinculativo, mas expressa a vontade do proprietário do site.
- Tenha cuidado com a forma como utiliza os dados extraídos. Pegar em conteúdos e republicá-los, por exemplo, é prejudicial e ilegal, uma vez que esses conteúdos estão protegidos pela lei dos direitos de autor.
- Sempre que possível, peça autorização ao proprietário para recolher informações do site.
Através de ações amigáveis e éticas, pode contribuir para que os bots sejam vistos como a ferramenta útil que são, em vez de uma espécie de invasores digitais.
Dica extra: escolha a ferramenta de web scraping certa
Não existe uma fórmula perfeita para o web scraping, mas há fatores a ter em conta que podem conduzir aos melhores resultados no momento certo. Este artigo foi elaborado para abordar todas as questões, todas as regras escritas ou não escritas e todas as melhores práticas existentes. Uma API ajudará a resolver os muitos problemas diários do scraping, e é precisamente por isso que o nosso primeiro truque será sempre a automatização.
Faça o scraping com sensatez e desfrute dos frutos do seu trabalho com 1000 chamadas grátis oferecidas por nós!
Embora algumas das dicas acima mencionadas digam respeito à forma como utiliza a ferramenta de scraping, muitas delas podem ser integradas e automatizadas pelo próprio software, permitindo-lhe concentrar-se nas suas próprias tarefas e objetivos. É por isso que consideramos que escolher o programa certo é tão importante quanto todas as dicas que discutimos, se não mais.
Sinceramente, acho que a WebScrapingAPI é uma excelente opção, sobretudo porque pode experimentar a API com um plano gratuito e ver por si mesmo como funciona antes de investir qualquer dinheiro.
Se quiseres dar uma vista de olhos, elaborámos um guia de compra completo com 20 ferramentas de web scraping, por isso não deixes de o consultar!




