ブログのサイトマップのURLを知りたい~サイトマップを介して記事のURLを取得したい

 

実はもう実装済みなのですが、はてなブログでランダム記事を表示できるようにしたいと思っていまして…

その過程で、Pythonを使って、サイトマップを介して記事のURLを取得することにして、有効なサイトマップのURLを確認することになりました。

 

一般的によく使われているサイトマップのURLは

https://●●●/sitemap.xml

とかなのですが、私のサイト、https://www.mikanusagi.comでもhttps://mikanusagi.comでも飛んでいくことができるようになっています。

確認した結果、このブログのサイトマップに関しては、wwwがついているものが有効になっているようでした。

 

検索をかけてみると…

こんなの出てきました。

This XML file does not appear to have any style information associated with it. The document tree is shown below.

(このXMLファイルには、スタイル情報は関連付けられていないようです。ドキュメント ツリーを以下に示します。)

 

これは何ですかね

 

ChatGPT曰く、私のブログのサイトマップは sitemapindex 形式になっているとのこと。

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <sitemap>
    <loc>https://●●●/sitemap-1.xml</loc>
  </sitemap>
  <sitemap>
    <loc>https://●●●/sitemap-2.xml</loc>
  </sitemap>
</sitemapindex>


のような形だと、複数のサイトマップファイルをまとめている状態なので、最初のサイトマップから記事URLを直接取得できません。

 

今回の場合、これは「サイトマップのリスト」になっていて、記事URLは中の各サブサイトマップにあります。

sitemapindex は複数サイトマップをまとめたファイルのことです。

はてなブログの sitemap.xml はこの形式が多いです。

 

あら…。sitemapindex形式になっているから、サイトマップから記事URLを取得するには一工夫が必要なようです。

 

ちなみに、すごく前の記事で、はてなブログで作成されている私のサイトマップって、こんな構造なのかなとか書いていましたが、イメージ的にはこんな感じになっているってことなんですかね(タブン)?

f:id:mikanusagi:20190419225745p:plain

【2019年4月】サイトマップが Google Search Console に検出されなくなっている件について その1

 

そんなわけで、sitemapindex形式になっている場合にサイトマップを介して記事のURLを取得するためには、

  • sitemapindex の中の各 <loc> URLを順に取得
  • 各サブサイトマップを再度ダウンロードして <url><loc> を抽出

という処理が必要なのだそうです。

 

難しそうですが、一応状況は分かりました…(゜-゜)

記事URLの抽出については自分では分からないので、ChatGPTにコードを教えてもらいながらやってみようと思います (というかやりました)。

その記事はまたそのうちアップします。