Python で URL のリストからサイトマップ (sitemap.xml) を作る
SEO について考える上で、必須である項目の1つにサイトマップ(sitemap.xml)があります。そこで、URL のリストからサイトマップを作る方法についてご紹介いたします。
(※ Python 3系を前提としています)
Google の推奨するサイトマップ形式
sitemap.xml
の主な構造は以下です。
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>http://www.example.com/foo.html</loc>
<lastmod>2018-06-04</lastmod>
</url>
<url>
<loc>http://www.example.com/faa.html</loc>
<lastmod>2018-06-04</lastmod>
</url>
</urlset>
参考: https://support.google.com/webmasters/answer/183668?hl=ja
sitemap.xml を作る
xml
という標準ライブラリの、ElementTree
を利用します。
サンプルプログラム
import xml.etree.ElementTree as ET
urls = [
"https://www.yahoo.co.jp/",
"https://www.google.com/",
"https://www.facebook.com/",
"https://twitter.com/",
"https://paymap.jp/",
]
urlset = ET.Element('urlset')
urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
tree = ET.ElementTree(element=urlset)
for url in urls:
url_element = ET.SubElement(urlset, 'url')
loc = ET.SubElement(url_element, 'loc')
loc.text = url
lastmod = ET.SubElement(url_element, 'lastmod')
lastmod.text = "2019-01-12"
tree.write('sitemap.xml', encoding='utf-8', xml_declaration=True)
順番に説明
import
xml
の ElementTree
を ET
としてインポートします。
import xml.etree.ElementTree as ET
urls
URL のリストを urls
としました。
urls = [
"https://www.yahoo.co.jp/",
"https://www.google.com/",
"https://www.facebook.com/",
"https://twitter.com/",
"https://paymap.jp",
]
urlset
sitemap の構造に合わせて、urlset
をルートにし、xmlns
のアトリビュートをセットします。
urlset = ET.Element('urlset')
urlset.set("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")
tree = ET.ElementTree(element=urlset)
各要素を作る
URL のリストからでurl
に loc
と lastmod
を作成し、loc
に URL を挿入し、lastmod
には日付を挿入します。必要に応じてchangefreq
などもセットしてください。
for url in urls:
url_element = ET.SubElement(urlset, 'url')
loc = ET.SubElement(url_element, 'loc')
loc.text = url
lastmod = ET.SubElement(url_element, 'lastmod')
lastmod.text = "2019-01-12"
日付の操作方法を詳しく知りたい場合はPython datetime 日付の計算、文字列から変換【決定版】をご覧ください。
書き出し
encoding
とxml_declaration
で、書き出される XML 上部に<?xml version="1.0" encoding="UTF-8"?>
を定義し、sitemap.xml
というファイル名で書き出します
tree.write('sitemap.xml', encoding='utf-8', xml_declaration=True)
sitemap.xml
の確認
書き出されたファイルは以下のようになっています。
これでは確認しずらいので、Chromeなどのブラウザにドラッグ・アンド・ドロップすると、以下のように確認することができます。
まとめ
Python によるサイトマップ(sitemap.xml)の作り方の説明でした。
いいねをしていただけるとモチベーションに繋がりますので押していただけると嬉しいです。