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]