Pythonを使用してSEOファイルを解析およびピボットします
公開: 2021-08-10優れたSEO専門家にとって優れたデータソースは、ログファイル内にある検索エンジンのクロールデータです。 ログファイルを分析して、検索エンジンがどのようにWebサイトをクロールして理解しているかを正確に知ることができます。 これにより、サードパーティのSEOツールでは不可能な洞察が得られます。 時間とお金の両方を節約したい場合は、Pythonを使用してSEOのログファイルデータの解析、検証、ピボットを自動化してみてください。 この記事では、Pythonを使用してSEOファイルを解析およびピボットする方法の手順を説明します。

SEOファイルの解析とピボットにPythonを使用する必要がある理由
Pythonは多目的プログラミング言語であり、データ、Web開発、およびアルゴリズムの実行に関しては、さまざまなアプリケーションがあります。 Pythonを使用してログファイルからSEOデータを解析およびピボットすると、次のことが可能になります。
- 検索エンジンがどのようにあなたのウェブサイトをクロールして見ているかについての具体的な証拠をあなたに与えることによってあなたの結論を検証してください
- 問題の規模とそれを修正するのにどれだけ役立つかを確認できるようにすることで、調査結果に優先順位を付けます
- 他のデータソースでは見られない他の問題を見つける
ログファイルデータを使用することにはいくつかの利点がありますが、多くのSEO専門家は、さまざまな理由でログファイルデータを避けています。 1つは、データを見つけることは通常、開発チームを通過することを意味し、これには多くの時間がかかる可能性があります。 また、生のファイルは大きくて理解しにくい場合があり、データの解析が困難になります。 最後に、プロセスを単純化するように設計されたツールのコストは高すぎる可能性があります。
これらはすべて有効な懸念事項ですが、別の方法があります。 あなたはコーディングやスクリプト言語のいくつかの知識を持っている場合は、プロセスを自動化することができます。 Pythonを使用してSEOのサーバーログを分析する方法の手順を説明します。
Pythonを使用してSEOファイルを解析およびピボットする方法
開始する前に、ログファイルデータの解析に使用する形式を検討する必要があります。 Apache、Nginx、IISなどのいくつかのオプションがあります。 さらに、Cloudflare、Cloudfront、Akamaiなどの多くのWebサイトは、現在CDNプロバイダーを使用して、最も近いエッジの場所からユーザーにコンテンツを提供しています。
この記事では、結合ログ形式に焦点を当てます。 これは、Combine Log FormatがNginxのデフォルトであり、通常はApacheサーバーで選択されるためです。
扱っているフォーマットの種類がわからない場合は、 BuiltwithやWappalyzerなど、Webサイトの技術スタックについて知ることができるサービスがあります。
それでもわからない場合は、生ファイルの1つを開くだけです。 特定のフィールドに関する情報とともに提供されるコメントを相互参照します。
また、どの検索エンジンを含めるかを検討する必要があります。 この記事では、グーグルに焦点を当てます。グーグルは世界市場シェアの92%以上を占める最も支配的な検索エンジンだからです。

1.ファイルを識別してフォーマットを決定する
結果として生じるSEO分析を実行するには、一般的なWebサイトで最低約100,000のリクエストと、2〜4週間分のデータが必要になります。 ファイルのサイズが大きいため、ログは通常、個々の日に分割されます。 ほとんどの場合、処理する複数のファイルを受け取ります。
スクリプトを実行する前にそれらを結合しない限り、処理するファイルの数がわからないため、最初のステップは、globモジュールを使用してフォルダー内のすべてのファイルのリストを生成することです。 次に、指定したパターンに一致する任意のファイルを返すことができます。 次のコードは、すべてのTXTファイルと一致します。
グロブをインポートする
files = glob.glob( '* txt。')
ただし、すべてのファイルがTXTであるとは限りません。 ログファイルには、さまざまな種類のファイル形式があります。 あなたもファイル拡張子を認識しないかもしれません。
また、受け取ったファイルが複数のサブフォルダーに分割される可能性もあり、それらを1つの場所にコピーする時間を無駄にしたくありません。 幸い、globは再帰検索とワイルドカード演算子の両方をサポートしています。 つまり、サブフォルダーまたは子サブフォルダー内のすべてのファイルのリストを生成できます。
files = glob.glob( '** / *。*'、recursive = True)
次に、リスト内にあるファイルの種類を特定します。 これを行うために、特定のファイルのMIMEタイプを検出できます。 これにより、拡張子に関係なく、処理しているファイルの種類がわかります。
これを行うには、libmagic Cライブラリのラッパーであるpython-magicを使用し、単純な関数を作成します。
pip installpython-magic
pip install libmagic
魔法をインポートする
def file_type(file_path):
mime = magic.from_file(file_path、mime = True)
mimeを返す
次に、リスト内包表記を使用してファイルをループし、関数を適用して、名前とタイプの両方を格納する辞書を作成できます。
file_types = [file_type(file)for file in files]
file_dict = dict(zip(files、files_types))
最後に、関数とwhileループを使用して、MIMEタイプのtext / plainを返し、それ以外のものを除外するファイルのリストを抽出します。
非圧縮= []
def file_identifier(file):
キーの場合、file_dict.items()の値:
値のファイルの場合:
uncompressed.append(key)
while file_identifier( 'text / plain'):

file_dictのfile_identifier( 'text / plain')

2.検索エンジンリクエストを抽出します
1つまたは複数のフォルダー内のファイルをフィルター処理した後、次のステップは、関心のある要求のみを抽出することにより、ファイル自体をフィルター処理することです。
これにより、GREPやFINDSTRなどのコマンドラインユーティリティを使用してファイルを結合する必要がなくなり、適切なコマンドを検索する時間を節約できます。
この場合、Googlebotリクエストのみが必要なので、「Googlebot」を検索して、関連するすべてのユーザーエージェントに一致させます。
Pythonのopen関数を使用してファイルを読み書きしたり、Pythonの正規表現モジュールREを使用して検索を実行したりできます。
3.リクエストの解析
リクエストを解析する方法は複数あります。 この記事のために、 Pandasの組み込みCSVパーサーといくつかの基本的なデータ処理関数を使用して次のことを行います。
- 不要な列を削除する
- タイムスタンプをフォーマットします
- 完全なURLで列を作成する
- 残りの列の名前を変更して並べ替えます
ドメイン名をハードコーディングする代わりに、input関数を使用してユーザーにプロンプトを表示し、変数として保存することができます。
4.リクエストを検証します
検索エンジンのユーザーエージェントをスプーフィングするのは非常に簡単で、リクエストの検証をプロセスの重要な部分にします。これにより、独自のサードパーティのクロールを分析して誤った結論を導き出すのを防ぐことができます。
これを行うには、dnspythonというライブラリをインストールし、逆引きDNSを実行する必要があります。 パンダを使用して、重複するIPを削除し、小さいDataFrameでルックアップを実行できます。 次に、結果を再適用し、無効なリクエストをフィルタリングします。
このアプローチにより、ルックアップの速度が大幅に向上し、わずか数分で数百万のリクエストが検証されます。

5.データをピボットする
検証後、クレンジングされた、理解しやすいデータセットが得られます。 このデータのピボットを開始して、関心のあるポイントをより簡単に分析できます。
Pandasのgroupby関数とagg関数を使用した単純な集計から始めて、さまざまなステータスコードのリクエスト数のカウントを実行できます。
status_code = logs_filtered.groupby( 'Status Code')。agg( 'size')
Excelで使用するカウントの種類を複製するには、「カウント」ではなく「サイズ」の集計関数を指定する必要があります。 countを使用する場合は、DataFrame内のすべての列で関数を呼び出し、null値の処理は異なります。 インデックスをリセットすると、両方の列のヘッダーが復元され、後者の列の名前をより関連性の高いものに変更できます。
より高度なデータ操作が必要な場合は、Pandasの組み込みピボットテーブルがExcelに匹敵する機能を提供します。これにより、1行のコードで複雑な集計が可能になります。 最も基本的なレベルでは、関数は指定されたDataFrameとインデックス(またはマルチインデックスが必要な場合はインデックス)を必要とし、対応する値を返します。
より具体的にするために、必要な値を宣言し、aggfuncパラメーターを使用して集計(合計、平均など)を適用できます。 columnsパラメーターは、出力を明確にするために値を水平方向に表示するのにも役立ちます。
範囲を組み込む
多くの異なる数値を持つ可能性のあるバイトなどのデータポイントの場合、データをバケット化する必要があります。 これを行うには、リスト内で間隔を定義してから、cut関数を使用して値をビンに並べ替え、np.infを指定して、宣言された最大値に関するすべてをキャッチします。
6.エクスポート
最後に、ログデータとピボットをエクスポートする必要があります。 分析を容易にするために、CSVではなくExcelファイルにデータをエクスポートすることをお勧めします。 XLSXファイルは複数のシートをサポートします。つまり、すべてのDataFrameを1つのファイルにまとめることができます。 これは、Excelを使用して実現できます。 同じブックに複数のシートを追加するため、ExcelWriterオブジェクトを指定する必要があります。 さらに、多数のピボットをエクスポートする場合は、DataFrameとシート名をディクショナリに格納し、forループを使用することで、作業を簡素化するのに役立ちます。
Excelの行制限は1,048,576であることに注意してください。 すべてのリクエストをエクスポートしているため、サンプルが大きい場合は問題が発生する可能性があります。 CSVファイルには制限がないため、ifステートメントを使用してCSVエクスポートをフォールバックとして追加できます。 次に、ログファイルDataFrameの長さが1,048,576を超える場合、CSVとしてエクスポートされます。 これにより、スクリプトが失敗するのを防ぎ、ピボットを1つのエクスポートに結合します。

SEO DesignChicagoを使用したSEOファイルの解析とピボット
Pythonを使用してSEOファイルを解析およびピボットすることは便利なスキルですが、習得するのも困難です。 SEOファイルについてサポートが必要な場合は、 SEO DesignChicagoのSEOデータエキスパートに今すぐお問い合わせください。
よくある質問:
- Pythonとは何ですか?
- Pythonを使用してSEOファイルを解析およびピボットするにはどうすればよいですか?
- Pythonを使用してSEOファイルを解析およびピボットする必要があるのはなぜですか?
- Pythonを使用して検索エンジンリクエストを抽出するにはどうすればよいですか?
- SEOファイルを解析してピボットするためのコーディング方法を知る必要がありますか?
