Esta es una implementación de protocolo de exclusión de ttxt.
Para construir y ejecutar las pruebas, ejecute la prueba GO en el directorio de origen.
Cálida bienvenida.
Gracias.
Como de costumbre, no se requiere una instalación especial, solo
importar "github.com/temoto/robotstxt"
Corre, ve a buscar y estás listo.
En primer lugar, debe analizar los datos de los robots.txt. Puede hacerlo con funciones debytes (cuerpo [] byte) (*robotsdata, error) o lo mismo para la cadena:
Robots, err: = robotstxt.frombytes ([] byte ("user-agent: * ndisallow:"))
Robots, err: = RobotStxt.FromString ("User-agent: * ndisallow:")
A partir de 2012-10-03, FromBytes es el método más eficiente, todo lo demás es un envoltorio para esta función central.
Hay pocos constructores convenientes para diversos fines:
de la respuesta http. No llama a respuesta.body.close ():
Robots, err: = RobotStxt.FromResponse (resp)
resp.body.close ()
si err! = nil {
log.println ("Error analizar robots.txt:", err.error ())
}
FromStatusAndString si prefiere leer bytes (cadena) usted mismo. El código de estado de aprobación se aplica después de la lógica en línea con la interpretación de Google de los archivos de robots.txt:
- Estado 2xx -> Cuerpo de analizador con fromBytes y aplique las reglas enumeradas allí.
- Estado 4xx -> Permitir todos (incluso 401/403, según lo recomendado por Google).
- Otros (5xx) -> no permitir todo, considere esto como una falta de disponibilidad temporal.
Poner el contenido de robots.txt construye una especie de base de datos lógica, que puede consultar con (r *robotsData) testAgent (url, agente cadena) (bool).
El paso explícito del agente es útil si desea consultar para diferentes agentes. Para los usuarios de un solo agente hay una opción eficiente: RobotsData.FindGroup (String UserAgent) Devuelve una estructura con el método .Test (String String) y .CrawDelay Time.duration.
Consulta simple con agente de usuario explícito. Cada llamada escaneará todas las reglas.
permitir: = robots.testagent ("/", "foobot")
O consultar varias rutas contra el mismo agente de usuario para su rendimiento.
grupo: = robots.findgroup ("Barbot")
grupo.test ("/")
Group.test ("/download.mp3")
Group.test ("/News/Artículo-2012-1")
Contribuyentes honorables (en orden indefinido):
- Ilya Grigorik (Igrigorik)
- Martin Angers (puerkitobio)
- Micha Gorelick (MyNameSfiber)
Conjunto inicial y otro: Sergey Shepelev [email protected]