robotstxt
1.0.0
这是GO语言(Golang)的robots.txt排除协议实现。
要构建和运行测试,请在源目录中运行测试。
热情欢迎。
谢谢。
像往常一样,不需要特殊安装
导入“ github.com/temoto/robotstxt”
运行去获取,你已经准备好了。
首先,您需要解析robots.txt数据。您可以使用Bybytes(Body []字节)的函数(*robotsdata,error)或对字符串相同的功能:
机器人,err:= robotstxt.frombytes([] byte(“用户代理: * ndisallow:”)) 机器人,err:= robotstxt.fromstring(“用户代理: * ndisallow:”)
截至2012-10-03,FromBytes是最有效的方法,其他所有内容都是此核心功能的包装器。
出于各种目的,几乎没有方便的构造函数:
来自HTTP响应。它不调用响应。Body.Close():
机器人,err:= robotstxt.fromresponse(resp)
desp.body.close()
如果err!= nil {
log.println(“错误解析robots.txt:”,err.error())
}
如果您喜欢自己阅读字节(字符串),则fromstatusandstring。传递状态代码按照Google对机器人的解释一致的逻辑应用。TXT文件:
- 状态2xx->带有源代码的分析主体,并应用那里列出的规则。
- 状态4xx->允许所有(即使是Google建议的401/403)。
- 其他(5xx) - >不允许所有人,将其视为暂时的不可用。
解析robots.txt内容构建了一种逻辑数据库,您可以使用(r *robotsdata)tistagent(url,agent string)(bool)查询。
如果您想查询不同的代理,则代理的显式传递将很有用。对于单个代理用户,有一个有效的选项:robotsdata.findgroup(useragent String)返回带有.test(path String)方法和.crawldelay time.duration的结构。
使用显式用户代理的简单查询。每个呼叫将扫描所有规则。
允许:= robots.testagent(“/”,“ foobot”)
或查询与同一用户代理有关性能的多个路径。
组:= robots.findgroup(“ Barbot”) group.test(“/”) group.test(“/download.mp3”) group.test(“/新闻/2012-1”)
荣誉贡献者(按未定义的顺序):
- Ilya Grigorik(Igrigorik)
- 马丁·安吉尔(Puerkitobio)
- Micha Gorelick(MynameIffiber)
初始提交和其他:Sergey Shepelev [email protected]