Pythonでsitemap.xmlを作る方法

2024-08-15 by 内田裕之

こんにちは。

Visual Studio Codeでブログを書いているうっちゃんです。

以前はWordPressでブログを書いていましたが、ドットインストールでHTML/CSSを学んでからは自分で書いています。

プラグインを使わなくなって困ったのがsitemap.xmlの作成です。

今回はPythonでsitemap.xmlを作成するプログラムのコードを紹介します。

この記事は内容に広告・プロモーションを含みます。

Pythonでsitemap.xmlを作成しよう

アイディアの画像

WordPressならプラグイン「Google XML sitemap」を使えば簡単に作成できます。

でも、自分でコードを書くようになったらsitemapをどのように作成すれば良いでしょうか。

sitemap.xmlの概要

Copilotにsitemap.xmlについて聞いてみました。

sitemap.xmlとは、ウェブサイトの各ページのURLをリスト化したXML形式のファイルです。

このファイルは、検索エンジンのクローラー(例えばGooglebot)に対して、サイト内のどのページをクロールしてほしいかを伝える役割を果たします。

具体的には、sitemap.xmlには以下の情報が含まれます。

  • 各ページのURL
  • 最終更新日
  • 更新頻度
  • ページの優先度

これにより、検索エンジンはサイトの構造を効率的に理解し、重要なページを見逃さずにクロールすることができます。

SEOにも重要な要素らしく、ブログをやっているなら作成してSearch Consoleに登録しておきたいものです。

Pythonコード

Copilotにコードを書いてもらいました。


import requests
from bs4 import BeautifulSoup
import xml.etree.ElementTree as ET

def get_all_links(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.content, 'html.parser')
    links = set()
    for a_tag in soup.find_all('a', href=True):
        link = a_tag['href']
        if link.startswith('/'):
            link = url + link
        elif not link.startswith('http'):
            link = url + '/' + link
        links.add(link)
    return links

def create_sitemap(links, output_file):
    urlset = ET.Element('urlset', xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
    for link in links:
        url = ET.SubElement(urlset, 'url')
        loc = ET.SubElement(url, 'loc')
        loc.text = link
    tree = ET.ElementTree(urlset)
    tree.write(output_file, encoding='utf-8', xml_declaration=True)

if __name__ == "__main__":
    url = "https://tsumawosettoku20200808.com" #ここにURLを入れる
    links = get_all_links(url)
    create_sitemap(links, 'sitemap.xml')
    print(f"Sitemap created with {len(links)} links.")
        

作成したsitemap.xmlをサーバーにアップロードして、Search Consoleでxxx(URL)/sitemap.xmlを登録すれば完了です。

Copilotに聞くだけでコードを書いてくれるなんて、便利な時代になりましたね。

ただ、コードの意味はまだ勉強できていないのでこれはまた後ほど。

まとめ

今回はPythonでsitemap.xmlを作成する方法をまとめました。

Copilotをうまく活用してコーティングを楽にしましょう!

この記事がおもしろいと感じた方はX(旧Twitter)やブログで紹介いただけますと嬉しいです。

おすすめ記事

PythonでFXのデータを取得する方法【ALPHA VANTAGE】

2023年iDeCoのベストな投資先は【コモディティ】Pythonで投資分析した話

【知らないと損】2023年にレバナスに投資してはいけない理由