Esta é uma implementação do protocolo de exclusão robots.txt para o idioma Go (Golang).
Para criar e executar testes, execute o teste, vá no diretório de origem.
Caloroso bem -vindo.
Obrigado.
Como sempre, nenhuma instalação especial é necessária, apenas
importar "github.com/temoto/robotstxt"
Run Go e você estará pronto.
Primeiro de tudo, você precisa analisar robots.txt dados. Você pode fazê -lo com funções de bytes (byte byte) (*robotsdata, erro) ou o mesmo para string:
robôs, err: = robotstxt.Fombytes ([] byte ("User-Agent: * ndisallow:")))
Robôs, err: = robotstxt.FromString ("User-Agent: * ndisallow:")
A partir de 2012-10-03, Frombytes é o método mais eficiente, tudo o mais é um invólucro para essa função principal.
Existem poucos construtores convenientes para vários fins:
da resposta HTTP. Não chama a resposta.body.close ():
Robôs, err: = robotstxt.FromResponse (resp)
resp.Body.Close ()
se err! = nil {
log.println ("Erro analisando robots.txt:", err.error ())
}
DestatusAndString se você preferir ler bytes (string) você mesmo. O código de status de aprovação se aplica a seguir a lógica, de acordo com a interpretação do Google dos arquivos robots.txt:
- Status 2xx -> Parse corpo com Frombytes e aplique regras listadas lá.
- Status 4xx -> Permitir tudo (mesmo 401/403, conforme recomendado pelo Google).
- Outros (5xx) -> Não permitir tudo, considere isso uma indisponibilidade temporária.
Parsing robots.txt Conteúdo cria um tipo de banco de dados de lógica, que você pode consultar com (r *robotsdata) testagent (URL, agente string) (bool).
A passagem explícita do agente é útil se você deseja consultar diferentes agentes. Para usuários de agentes únicos, existe uma opção eficiente: robotsdata.findgroup (string userAgent) retorna uma estrutura com o método .test (string de path) e .crawldlay time.draturion.
Consulta simples com agente de usuário explícito. Cada chamada verá todas as regras.
Permitir: = robots.testagent ("/", "Foobot")
Ou consulte vários caminhos contra o mesmo agente de usuário para desempenho.
Grupo: = robots.findgroup ("Barbot")
grupo.test ("/")
group.test ("/download.mp3")
Group.test ("/News/Artigo-2012-1")
Contribuidores honoráveis (em ordem indefinida):
- Ilya Grigorik (Igrigorik)
- Martin Angers (Puerkitobio)
- Micha Gorelick (MyNameisfiber)
Compromisso inicial e outro: Sergey Shepelev [email protected]