A raspagem da Web é uma técnica poderosa para extrair dados de sítios Web, mas deve ser feita de forma responsável. Um elemento crucial da raspagem da Web é compreender e respeitar o ficheiro robots.txt. Este artigo apresenta uma análise aprofundada do ficheiro robots.txt, o seu papel na recolha de dados da Web e as melhores práticas a seguir.
O que é o robots.txt?
O ficheiro robots.txt é um padrão utilizado pelos sítios Web para comunicar com os rastreadores e bots da Web. Especifica quais as partes do sítio que podem ou não ser acedidas por sistemas automatizados. Apesar de ter sido concebido principalmente para os motores de busca, o ficheiro robots.txt também tem impacto nas práticas de raspagem da Web.
Objetivo
O principal objetivo do robots.txt é indicar aos rastreadores da Web (como os dos motores de busca) quais as páginas ou secções de um sítio Web que estão autorizados a rastrear ou indexar. Isto pode ajudar a impedir que determinado conteúdo apareça nos resultados dos motores de busca, a gerir a carga do servidor e a controlar a acessibilidade de informações privadas ou sensíveis. Com ele, os administradores do sítio controlam e gerem as actividades dos Web crawlers, evitando sobrecargas e protegendo dados sensíveis.
Localização
O ficheiro robots.txt deve ser colocado no diretório raiz do sítio Web. Por exemplo, deve ser acessível através de http://www.example.com/robots.txt.
Formato
O ficheiro é constituído por texto simples e segue uma estrutura básica. Inclui diretivas que especificam que agentes de utilizador (bots) devem seguir que regras.
Diretivas comuns:
-
Agente do utilizador
Define a que Web crawler se aplicam as seguintes regras.
Por exemplo: Agente do utilizador: *
O asterisco (*) é um wildcard que se aplica a todos os bots. -
Não permitir
Especifica os caminhos ou páginas a que um rastreador não deve aceder.
Por exemplo: Não permitir: /private/
Isto diz aos bots para não rastrearem qualquer URL que comece por /private/. -
Permitir
Substitui uma diretiva Disallow para caminhos específicos.
Por exemplo: Permitir: /private/public-page.html
Isto permite que os crawlers acedam a public-page.html mesmo que /private/ não seja permitido. -
Atraso de rastreio
Define um atraso entre os pedidos para gerir a carga no servidor.
Por exemplo: Atraso de rastejamento: 10 -
Mapa do sítio
Indica a localização do mapa do site XML para ajudar os rastreadores a encontrar e indexar páginas de forma mais eficiente.
Por exemplo: Mapa do sítio: http://www.example.com/sitemap.xml
Exemplo de ficheiro robots.txt
Agente do utilizador: * Não permitir: /private/ Permitir: /private/public-page.html Atraso de rastreamento: 12 Mapa do site: http://www.example.com/sitemap.xml
Considerações adicionais
- Alguns motores de busca têm um limite de tamanho para os
robots.txtficheiro, normalmente 500 KB. Certifique-se de que o ficheiro não excede este limite. - O
robots.txtdeve utilizar a codificação UTF-8. A utilização de outras codificações pode impedir a análise correta. - Alguns crawlers (como o Googlebot) suportam a utilização de wildcards em
Não permitirePermitirdiretivas (por exemplo,*para quaisquer caracteres,$para o fim de uma cadeia de caracteres).Não permitir: /private/* Não permitir: /temp/$ - O
robots.txté sensível a maiúsculas e minúsculas. Por exemplo,/Administração/e/admin/são caminhos diferentes. - As pessoas podem utilizar o
#para adicionar comentários no ficheiro, que são ignorados pelos rastreadores mas podem ajudar os administradores a compreender e manter o ficheiro.# Impedir que todos os crawlers acedam às páginas de administração User-agent: * Não permitir: /admin/ - Antes de aplicar o
robots.txtpara um ambiente de produção, utilize ferramentas (como o robots.txt Tester na Consola de Pesquisa do Google) para testar as regras e garantir que funcionam como esperado. - Para sítios Web de grandes dimensões ou com conteúdo dinâmico, poderá ser necessário gerar dinamicamente o
robots.txtficheiro. Certifique-se de que o ficheiro gerado é sempre válido e inclui todas as regras necessárias. - Nem todos os crawlers obedecem ao
robots.txtpelo que poderão ser necessárias medidas adicionais (como firewalls de servidor, listas negras de IP, etc.) para proteger conteúdos sensíveis de rastreadores maliciosos. - Se pretender impedir que os motores de busca indexem páginas específicas, mas permitir que os rastreadores acedam às mesmas para obter outros conteúdos, utilize a opção
noindexmeta tag em vez deNão permitir.<meta name="robots" content="noindex"> - Tentar manter o
robots.txtseja simples e evite regras demasiado complexas. As regras complexas podem ser difíceis de manter e podem conduzir a potenciais erros de análise.
Como é que o robots.txt afecta o Web Scraping
-
Diretrizes para os rastejadores
A principal função do robots.txt é fornecer instruções aos rastreadores da Web sobre as partes do sítio que não devem ser acedidas. Por exemplo, se um ficheiro ou diretório não for permitido no robots.txt, espera-se que os crawlers evitem essas áreas.
-
Respeito pelo robots.txt
- Raspagem ética: Muitos scrapers e crawlers éticos da Web aderem às regras especificadas em robots.txt como cortesia para os proprietários dos sítios e para evitar sobrecarregar o servidor.
- Considerações legais: Embora não seja juridicamente vinculativo, ignorar o robots.txt pode, por vezes, levar a problemas legais, especialmente se a raspagem causar danos ou violar os termos de serviço.
-
Caminhos não permitidos vs. permitidos
- Caminhos não permitidos: Estes são especificados utilizando a diretiva Disallow. Por exemplo,
Não permitir: /private-data/significa que todos os crawlers devem evitar o diretório /private-data/. - Caminhos permitidos: Se determinados diretórios ou páginas forem permitidos, podem ser especificados utilizando a diretiva Allow.
- Caminhos não permitidos: Estes são especificados utilizando a diretiva Disallow. Por exemplo,
-
Regras específicas do agente do utilizador
O ficheiro robots.txt pode especificar regras para diferentes crawlers utilizando a diretiva User-agent.
Por exemplo:
Agente do utilizador: Googlebot
Não permitir: /no-google/Isto bloqueia o acesso do Googlebot a /no-google/, mas permite o acesso de outros crawlers.
-
Carga do servidor
Ao seguir as diretrizes do robots.txt, os scrapers reduzem o risco de sobrecarregar um servidor, o que pode acontecer se forem feitos demasiados pedidos demasiado depressa.
-
Não é um mecanismo de segurança
O ficheiro robots.txt não é uma caraterística de segurança. É uma diretriz, não uma restrição. Depende do facto de os crawlers respeitarem as regras estabelecidas. Os scrapers maliciosos ou os programados para ignorar o robots.txt ainda podem aceder a áreas não permitidas.
-
Conformidade e boas práticas
- Respeitar robots.txt: Para evitar potenciais conflitos e respeitar os operadores dos sítios Web, os scrapers devem aderir às regras definidas em robots.txt.
- Considerar robots.txt Estado: Verifique sempre o ficheiro robots.txt antes de fazer scraping de um sítio para garantir a conformidade com as políticas do sítio.
Equívocos comuns sobre o robots.txt
-
O robots.txt é legalmente vinculativo
O robots.txt não é um contrato legal, mas um protocolo para gerir o acesso de crawlers. Embora seja crucial para a raspagem ética, não impõe legalmente restrições de acesso.
-
O robots.txt impede todos os scraping
O robots.txt é uma diretriz para bots e crawlers, mas não impede todas as formas de raspagem. A raspagem manual ou ferramentas sofisticadas podem continuar a aceder a áreas restritas.
-
robots.txt protege dados confidenciais
O robots.txt não é um recurso de segurança. Destina-se a gerir o acesso de crawlers e não a proteger informações sensíveis.
Como extrair páginas do site com robots.txt

1. Preparação para a raspagem
Configurar o seu ambiente
Instalar o necessário Python bibliotecas:
importar pedidos from bs4 import BeautifulSoup importar time
Escolher as ferramentas certas
- Pedidos: Para efetuar pedidos HTTP.
- Bela sopa: Para análise de HTML e XML.
- Escória: Uma estrutura abrangente de raspagem da Web.
- Selénio: Para interagir com conteúdos carregados dinamicamente.
Avaliar as condições de serviço do sítio Web
Reveja os termos de serviço do sítio Web para garantir que as suas acções estão em conformidade com as respectivas políticas. Alguns sítios Web proíbem explicitamente a recolha de dados.
2. Raspagem com precaução
Obtenção e análise de robots.txt
Em primeiro lugar, verifique o ficheiro robots.txt para compreender as regras de rastreio do sítio:
resposta = requests.get('https://example.com/robots.txt')
robots_txt = response.text
def parse_robots_txt(robots_txt):
regras = {}
agente_do_utilizador = '*'
for line in robots_txt.split('\n'):
if line.startswith('User-agent'):
user_agent = line.split(':')[1].strip()
elif line.startswith('Disallow'):
path = line.split(':')[1].strip()
regras[user_agent] = regras.get(user_agent, []) + [path]
return rules
regras = parse_robots_txt(robots_txt)
Identificação de caminhos permitidos e não permitidos
Determine quais os caminhos a que pode aceder de forma legal e ética com base nas diretivas robots.txt:
allowed_paths = [path for path in rules.get('*', []) if not path.startswith('/')]
Tratamento ético de caminhos não permitidos
Se precisar de dados de caminhos não permitidos, ou se pretender recolher dados de sítios Web protegidos por robots.txt, considere as seguintes opções:
- Contactar o proprietário do sítio Web: Pedir autorização para aceder aos dados.
- Utilizar métodos alternativos: Explorar APIs ou fontes de dados públicas.
3. Métodos alternativos de acesso aos dados
APIs e suas vantagenstages
Muitos sítios Web oferecem APIs que fornecem acesso estruturado aos seus dados. A utilização de APIs é frequentemente mais fiável e respeitadora do que a raspagem.
Fontes de dados públicas
Procure dados disponíveis publicamente que possam satisfazer as suas necessidades. Os sítios Web do governo, as instituições de investigação e as plataformas de dados abertos são bons locais para começar.
Acordos de partilha de dados
Contactar o proprietário do sítio Web para negociar acordos de partilha de dados. Isto pode permitir o acesso aos dados, respeitando as políticas do sítio.
4. Técnicas avançadas
Recolha de conteúdo carregado dinamicamente
Utilize o Selenium ou ferramentas semelhantes para recolher conteúdo que é carregado dinamicamente por JavaScript:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://example.com')
html = driver.page_source
soup = BeautifulSoup(html, 'html.parser')
Utilizar browsers sem cabeça
Os navegadores sem cabeça, como o Headless Chrome ou o PhantomJS, podem interagir com páginas Web sem apresentar uma interface de utilizador, o que os torna úteis para a recolha de conteúdos dinâmicos.
Evitar os limites da taxa de deteção e de tratamento
Alterne os agentes de utilizador, utilize proxies e implemente atrasos entre pedidos para imitar o comportamento humano e evitar ser bloqueado.
OkeyProxy é um poderoso fornecedor de proxy, que suporta rotação automática de IPs residenciais com alta qualidade. Com os ISPs a oferecerem mais de 150 milhões de IPs em todo o mundo, pode agora registar-se e receber um teste gratuito de 1 GB!

Conclusão
Ao seguir este guia, pode navegar pelas complexidades da recolha de páginas de sítios Web com robots.txt, respeitando as normas éticas e legais. Respeitar o robots.txt não só o ajuda a evitar potenciais problemas legais, como também assegura uma relação de cooperação com os proprietários dos sítios Web. Boa raspagem!

