はてなブログでランダムな記事を表示したい【素人でもできた Phyton編 1】

 

今回ChatGPTにコードを相談しながら作りました。
利用いただく場合は、自己責任でお願いします。
今回の目標はコレです。

▲ ランダムで表示される

 

前からランダム記事を表示するというのをやりたかったのですが…はてなブログには実装されていないのですよね。

RSSフィードを使ってやる方法が簡単そうだったのですが、ただ、これだと表示できるものが直近の100件くらいの中から選ぶことになるのだとか。現在このブログは500記事を超えているので、過去のものを掘り出すのが目的なのに、それができない…。

ということで、今回 Phytonを使う方法を、ChatGPTに教えて貰うことにしました。

 

ちなみに私は Phytonを使ったことがありません…笑

 

 

はてなブログでランダムな記事を表示したい

今回の方法は、サイトマップを読み取ることができる状態であることが必要条件です。

基準は分かりませんが、サイトマップの読み取りができないサイトがあるようなので、その場合はこの方法を利用することができません。

 

目標

今回のゴールはこれ。

自動でURL一覧を取得して、はてなブログのサイドバーに表示させる。

 

準備

今回はPCで作業します。

使うのは Python、テキストエディタ、コマンドプロンプト

ブログのサイトマップのURLも必要です。

 


Pythonを初めて使う場合は、ダウンロードしておきます。

なお、インストール前にチェックボックスが出てくるのですが、「Add Python 3.●● to PATH」にチェックを入れてからインストールします☑️

(やり方は詳しいサイトをご確認ください。)

今回初めてダウンロードして、ChatGPTに教えて貰って使いました(*'▽')

 

★Windowsからメモ帳が消えてしまっている場合は、以下の記事もご参考ください。

【Windows 11】テキストドキュメント(メモ帳)が消えた…→エクスプローラーの再起動

 

手順

今回の流れは、Pythonを使って記事URLを取得し、JavaScriptに変換してブログに貼りつける、となります。

  1. Pythonでサイトマップを読み取り、記事URLを抽出
  2. それらをJavaScriptの配列形式に整形
  3. その配列をブログの中に貼る

 

Pythonでサイトマップを読み取り、記事URLを抽出

このスクリプトをテキストエディタに貼り付け、ファイル名の拡張子を「.py」に変更しておきます。

 

サイトマップを読み込んで、JavaScriptで使える形に整えてくれるようになっています。

<python>

import requests

import xml.etree.ElementTree as ET

# サイトマップのURL

sitemap_url = "https://●●●/sitemap.xml"

# サイトマップを取得

res = requests.get(sitemap_url) res.raise_for_status()

# エラー時に止まる # XMLを解析

root = ET.fromstring(res.content) urls = [url.find('loc').text for url in root.findall('.//url')]

# JavaScript形式に変換

print('<script>') print(' const urls = [') for url in urls: print(f' "{url}",') print(' ];') print(' const randomIndex = Math.floor(Math.random() * urls.length);') print(' const randomUrl = urls[randomIndex];') print(' document.write(\'<a href="\' + randomUrl + \'"> ランダムな記事を読む</a>\');') print('</script>') 

 

具体的には、これを貼り付けた Pythonのファイルを作成したら、

1.コマンドプロンプトを開く

  

 

参考:コマンドプロンプトについて

コマンドプロンプトとは?基本的な使い方 | パソコン工房 NEXMAG

 

2. 作業フォルダを Pythonのファイルがある場所に変更する

C: \Users\●●●>などと出ていることが多いかと思います。

ここに「cd 作業場所」を入力してエンターを押下します。

例えばこんな感じですね。
C: \Users\●●●>cd C¥Users¥mikan¥…
作業場所は、ファイルのプロパティの「全般」>「場所」で確認することができます。

 

「cd」は現在の作業フォルダを変更できるコマンドです。コマンドプロンプトでファイル操作を行う場合、「cd」によって作業フォルダを変更することが多いです。たとえば「cd 【フォルダ名】」と入力することで、そのフォルダを作業フォルダに指定することができます。

コマンドプロンプトとは?できることや使い方をわかりやすく解説! | アンドエンジニア

 

3. Pythonのファイルを実行する

作業場所が指定できたら、作成した拡張子付きのファイル名を入力してエンター。

 

これでJavaScriptのコードが作成されて、それをブログのHTML編集のとこに貼り付けたら終わり。

 

 

 

…のはずだったのですが、さっそく最初から躓きました。(;´Д`)

 

 

 

私の問題点は2つありました。

まず、サイトのSSL証明書の有効期限がきれていました。

【備忘録】Xserver 無料独自SSL証明書の有効期限がきれていた件

これはこちらの記事の中で対応、解決しました。

 

次に、サイトマップのURLが「https://●●●/sitemap.xml」ではなく、sitemapindex形式になっていました。

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

こうなっていたために、上記のコードに一工夫する必要があることが判明しました。

 

 

長くなってきたので、サイトマップが sitemapindex 形式だった場合の対処法、アレンジ等については別の記事にまとめます。

それではまた(*'▽')/

 

 

続きはこちら✨

www.mikanusagi.com