Robots プロトコルとは、Robots Exclusion Protocol と呼ばれるプロトコルを指します。このプロトコルの主な機能は、Web スパイダーやロボットなどの検索エンジン クローラーに標準のアクセス制御メカニズムを提供し、どのページがクロール可能でどのページがクロールできないかを通知することです。この記事では、クローラー ロボット プロトコルの構文を詳細に説明し、関連するコードとケースを示します。
1. ロボットプロトコルの基本構文
Robots プロトコルの基本構文は次のとおりです。
ユーザーエージェント: [ユーザーエージェント名]
Disallow: [クロールされない URL 文字列]
このうち、User-agent は検索エンジン クローラーの名前を指定するために使用され、Disallow は検索エンジン クローラーによるクロールを許可しないページ URL を指定するために使用されます。
たとえば、ロボット プロトコル ファイルの例を次に示します。
User-agent: Googlebot
Disallow: /private/
Disallow: /admin/
Disallow: /login/
上記例では、検索エンジンのGooglebot名を指定し、/private/、/admin/、/login/の3ページのクロールを禁止する設定を行っています。
2. ロボットプロトコルの共通パラメータ
ロボット プロトコルには、次のような一般的に使用されるパラメータもいくつかあります。
- 許可: 検索エンジン クローラーがページ URL にアクセスできるようにします。
- サイトマップ: サイト マップの URL を指定します。この URL は、検索エンジン クローラーがサイトをクロールするときに提供されるため、検索エンジンはサイト全体の構造情報を取得できます。
- クロール遅延: 検索エンジン クローラーのクロール間隔を秒単位で指定します。
たとえば、ロボット プロトコル ファイルの例を次に示します。
User-agent: Googlebot
Disallow: /private/
Disallow: /admin/
Disallow: /login/
Allow: /public/
Sitemap: http://www.example.com/sitemap.xml
Crawl-delay: 10
上の例では、Allow パラメーターを追加して、検索エンジン クローラーが /public/ パスの下のページにアクセスできるようにしました。同時に、サイト マップの URL は http://www.example.com/sitemap.xml として指定され、検索エンジン クローラーの巡回間隔は 10 秒です。
3. ロボットプロトコルの場合
次に、実際のケースを使用して、ロボット プロトコルを使用して検索エンジン クローラーのアクセスを制限する方法を説明します。
電子商取引 Web サイトを作成したいが、検索エンジン クローラーにショッピング カート ページをクロールされたくないとします。
まず、Web サイトのルート ディレクトリに robots.txt という名前のファイルを作成し、検索エンジン クローラーにクロールさせたくないページ URL を指定する必要があります。サンプル コードは次のとおりです。
User-agent: *
Disallow: /cart/
上記のコードでは、「*」ワイルドカードを使用しています。これは、すべての検索エンジン クローラーに適用できることを意味し、/cart/ パス下のページへのアクセスが許可されないことも指定します。
このようにして、検索エンジン クローラーは、当社 Web サイトにアクセスすると、まずロボット プロトコル ファイルを読み取り、プロトコル ファイルの内容に基づいてショッピング カート ページをクロールするかどうかを決定します。
4. Python はロボット プロトコルを実装します
Python では、urllib ライブラリの robotparser モジュールを使用して、ロボット プロトコルを解析して使用できます。サンプル コードは次のとおりです。
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url("http://www.example.com/robots.txt")
rp.read()
if rp.can_fetch("Googlebot", "http://www.example.com/cart/"):
print("Googlebot is allowed to fetch the content!")
else:
print("Googlebot is not allowed to fetch the content!")
上記のコードでは、まず RobotFileParser オブジェクトを作成し、Robots プロトコル ファイルの URL を指定して、プロトコル ファイルの内容を読み取ります。次に、can_fetch() メソッドを使用して、指定された検索エンジン クローラーが指定された URL をクロールできるかどうかを判断します。
要約する
Robots プロトコルは Web サイト管理標準であり、Web サイトのルート ディレクトリに robots.txt ファイルを作成することで、検索エンジン クローラーが Web サイトのコンテンツをクロールするためのルールを規定できます。Robots プロトコルはシンプルで分かりやすく、安定した実行効果があり、Web サイト管理者が検索エンジンの最適化を行うための重要なツールです。