ウェブスクレイピングのためのRobots.txtとサイトマップを始めよう

ガイド, 11月13日-2024年5分で読める

無数のウェブサイトが注目を集めるために競い合う広大なデジタルの世界では、エンゲージメントのルールを理解することが極めて重要です。ウェブ開発者、SEO専門家、コンテンツ制作者にとって、robots.txtを解読することは、倫理的かつ効果的なウェブスクレイピングの鍵となります。このガイドでは、robots.txtとサイトマップを使用して、責任を持ってウェブサイトとやり取りする方法を理解するのに役立ちます。

ウェブクローリングにおけるRobots.txtの役割を理解する

ウェブクローリングは、検索エンジンがインターネット上のコンテンツを発見し、インデックスを作成する方法の中核です。ウェブサイトは、このクロール動作を管理・制御するための主要なツールとしてrobots.txtファイルを使用しています。これらのファイルは、検索エンジンのボットを含むウェブロボットに対する指示のセットとして機能し、どのコンテンツにアクセスするか、または無視するかを導きます。

robots.txtの目的は2つある。それは、サイト所有者が機密情報を保護し、サーバーのパフォーマンスを最適化するのに役立つと同時に、倫理的なウェブスクレイピングの枠組みを提供することです。

Robots.txtを理解する 

robots.txtの動作を説明するために、 このウェブサイトの例を考えてみましょう。典型的なrobots.txtファイルには、User-agent、Disallow、Allowといったディレクティブが含まれています。

  • User-agentは 、どのボットがルールに従うべきかを指定します。例えば、"User-agent:*はすべてのボットに適用されます。
  • Disallowは、管理セクションやプライベートディレクトリなど、ボットが特定のエリアにアクセスするのを防ぎます。
  • 特定のリソースへのアクセスを許可 し、サイト機能に不可欠な動的ファイルにアクセスできるようにする。

このウェブサイトでは robots.txt ファイルは次のように表示される:

  • ご覧の通り、このウェブサイトは アクセスを拒否する をこれらのURLパスに追加する:
    • /wp-content/uploads/wc-logs/
    • /wp-content/uploads/woocommerce_transient_files/
    • /wp-content/uploads/woocommerce_uploads/
    • /wp-admin/ (WordPress管理エリア)
  • アクセスを許可する 特に /wp-admin/admin-ajax.phpクローラーが必要なAJAX機能のためにこのファイルにアクセスできるようにする。
  • Yoast SEO Block:
    • ライン 不許可: は空で、このブロックによって追加される制限はないことを意味する。
    • サイトマップを提供: https://daystate.com/sitemap_index.xmlこれは、検索エンジンがインデックスを作成するために重要なURLを特定するのに役立つ。

サイトマップとは?

サイトマップはウェブサイトの重要な構成要素で、重要なURLをすべてリストアップしています。検索エンジンが新しいコンテンツや更新されたコンテンツを素早く発見し、インデックスできるようにするためのロードマップとして機能します。

サイトオーナーにとって、サイトマップはかけがえのないものだ。サイトマップは、すべての関連ページが検索エンジンに見えるようにし、より良いインデックスとランキングを促進します。サイトマップの利点はSEOにとどまらず、コンテンツを発見しやすくすることでユーザーエクスペリエンスを向上させます。

https://daystate.com/robots.txtrobots.txtファイルにはサイトマップへのリンクが含まれており、検索エンジンがたどる構造化されたパスを提供します。このリンクは、サイトのコンテンツの効率的なクロールとインデックスに不可欠です。

デイステートのサイトマップはこんな感じだ:

例えば、"https://daystate.com/product-sitemap.xml "をクリックしてみよう。

ご覧のように、このシナリオでは「商品」のすべてのURLを見ることができます。以下は、各商品をスクレイピングするためのPythonスクリプトです。まず、商品のXMLページを解析してすべての商品URLを抽出し、次に各URLを繰り返し、商品のタイトルと価格を抽出します。

import re

import requests
from bs4 import BeautifulSoup


def fetch_xml_sitemap(sitemap_url) -> str:

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
    }

    response = requests.get(sitemap_url, headers=headers)
    response.raise_for_status()  # Check for request errors

    return response.content


def extract_endpoints(response_content):
    output_endpoints = []

    soup = BeautifulSoup(response_content, "xml")
    # Loop through each product entry in the sitemap
    for url in soup.find_all("url"):
        # Extract link, last modified date, and image (if available)
        endpoint = url.find("loc").text if url.find("loc") else None
        if endpoint is not None:
            output_endpoints.append(endpoint)

    return output_endpoints

def extract_product_info(product_url):
    headers = {
        "User-Agent": "input_user_agent"}

    proxy = {
        "http": "http://username:[email protected]:6060",
        "https": "http://username:[email protected]:6060"
    }

    response = requests.get(product_url, headers=headers, proxies=proxy)

    soup = BeautifulSoup(response.content, "html.parser")

    pattern = re.compile(r"^product-\d+$")
    try:
        product_div = soup.find("div", id=pattern)
        product_title = product_div.find("h1", {"class":"product_title entry-title"}).text
        product_price = product_div.find("bdi").text
        return product_title, product_price
    except:
        print("Error Extracting Product Information")
        return None, None

if __name__ == '__main__':
    url_sitemap = "https://daystate.com/product-sitemap.xml"

    sitemap_xml = fetch_xml_sitemap(url_sitemap)

    sitemap_urls = extract_endpoints(sitemap_xml)

    for url in sitemap_urls:
        print(extract_product_info(url))

SEOとウェブ・スクレイピングに両ファイルが重要な理由

robots.txtファイルとサイトマップは共に、SEOと倫理的なウェブスクレイピングの実践のバックボーンを形成しています。 ロボット.txt は、ウェブクローラーを許可された領域に誘導し、機密データを保護し、サーバーの負荷を軽減します。一方、サイトマップは検索エンジンによるコンテンツの発見を促進し、新しいページが速やかにインデックスされるようにします。

ウェブスクレイパーにとって、これらのファイルを尊重することは最も重要です。robots.txtディレクティブを無視すると、ペナルティを受ける可能性があり、評判と検索エンジンのランキングの両方にダメージを与えます。倫理的なスクレイパーは、これらのガイドラインに従い、敬意あるデジタル環境を促進します。

結論

ロボット.txt ファイルとサイトマップは、ウェブクローリングに欠かせないツールです。サイトへのアクセスとインデックスを管理するための構造化されたアプローチを提供し、サイトオーナーとウェブスクレイパーの双方に利益をもたらします。
これらの要素を理解し尊重することで、デジタル戦略を最適化し、SEOを強化し、倫理的なウェブスクレイピングに取り組むことができます。責任ある利用がウェブエコシステムのバランスを維持し、すべてのステークホルダーにとってポジティブな体験を保証することを忘れないでください。