これは、GO言語(Golang)のrobots.txt除外プロトコルの実装です。
テストをビルドして実行するには、ソースディレクトリでGOテストを実行します。
温かい歓迎。
ありがとう。
いつものように、特別なインストールは必要ありません
「github.com/temoto/robotstxt」インポート
実行すると準備ができています。
まず、robots.txtデータを解析する必要があります。 bytes(body [] byte)(*robotsdata、エラー)からの関数でそれを行うことができます。
ロボット、err:= robotstxt.frombytes([] byte( "user-agent: * ndisallow:")) ロボット、err:= robotstxt.fromstring( "user-agent: * ndisallow:")
2012-10-03の時点で、frombytesは最も効率的な方法であり、他のすべてはこのコア関数のラッパーです。
さまざまな目的のための便利なコンストラクターはほとんどありません。
HTTP応答から。 respons.body.close()を呼び出しません:
ロボット、err:= robotstxt.fromResponse(rep)
resp.body.close()
err!= nil {
log.println( "robots.txt:"、err.error())エラー
}
fromstatusandstringあなたが自分でバイト(文字列)を読みたい場合。渡すステータスコードは、Googleのrobots.txtファイルの解釈に沿ってロジックに従って適用されます。
- ステータス2xx->ボディをfrombytesで解析し、そこにリストされているルールを適用します。
- ステータス4xx->すべてを許可します(Googleが推奨するように、401/403でも)。
- その他(5xx) - >すべてを禁止して、これを一時的に利用できないことを考えてください。
parsing robots.txtコンテンツは、一種のロジックデータベースを構築します。これは、(r *robotsdata)testagent(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( "/news/article-2012-1")
名誉ある貢献者(未定義の順序で):
- イリヤ・グリゴリク(イグリゴリク)
- マーティンアンジャーズ(プエルキトビオ)
- ミカ・ゴレリック(mynameisfiber)
最初のコミットとその他:Sergey shepelev [email protected]