備忘録
開発環境
Visual Studio Code
今日までまともにIDE使ったことなかったけど勉強がてらVSCode入れてみた。
以下の解説通りやれば特に苦労することなくWindows環境にPython導入できたし、pipも楽勝でできた。
www.python.jp
今までわざわざLinux構築してたのあほくさw
使うライブラリは以下の通り。Pythonでスクレイピングする際の定番ですね。
pip install lxml pip install requests pip install beautifulsoup4
全記事のURLを取得する。
「Pythonでパ二速のアーカイブにHTTPリクエストしてBS4でパースしてURLだけリストに格納するループ」を作ります。理解れ
こちらの方が全エントリのタイトルとURLを取得するコードを書いてくれてるので、流用引用します。ありがとうございます。
s51517765.hatenadiary.jp
タイトルは不要なので出力結果から削除して、テキストファイルに書き出すように改変しています。
一応動いてるけど今後の勉強のためにこここうしたらいいとかあったら教えて
import requests from bs4 import BeautifulSoup f = open('F:\panisoku2.txt', 'w', encoding='UTF-8') def soup_panisoku(url): html = requests.get(url) soup = BeautifulSoup(html.text, 'lxml') ##lxmlを指定するほうがよい alink = soup.select('a') #linkの一覧をListとして取得 #print(len(alink)) #Listの長さ for i in range(len(alink)): if alink[i].get("class")!=None: #クラスが未設定でない if 'entry-title-link' in alink[i].get('class'): #エントリーのclassとして指定されているものの時 if alink[i].get("href") not in list: #すでに抽出済みでなければ list.append(alink[i].get("href")) f.write(alink[i].get('href')+'\n') print(alink[i].get('href')) if __name__ == '__main__': list=[] rootUrl='https://vip-de-marika.hatenablog.jp/archive?page=' #エントリー一覧の基本url n=1 while(True): url=rootUrl+str(n) soup_panisoku(url) n+=1
出力結果がこんな感じ。つらつら全記事分のURLがメモ帳に出力されます。
ランダム記事用のスクリプトを作成する。
メッセージをランダムに出力するJavascriptの教科書的なコードを改変して、ランダム記事にしていきます。
以下の記事のコードを流用引用しました。ありがとうございます。
www.tagindex.com
<script type="text/javascript"> <!-- var msg = new Array(); // 設定開始(メッセージの内容を設定してください) msg[0] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/16/154543">ランダム記事リンク</a>'; msg[1] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/16/120000">ランダム記事リンク</a>'; msg[2] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/15/195232">ランダム記事リンク</a>'; msg[3] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/15/172831">ランダム記事リンク</a>'; msg[4] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/15/170924">ランダム記事リンク</a>'; msg[5] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/15/164945">ランダム記事リンク</a>'; msg[6] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/15/151418">ランダム記事リンク</a>'; msg[7] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/15/121438">ランダム記事リンク</a>'; msg[8] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/15/120000">ランダム記事リンク</a>'; msg[9] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/14/145534">ランダム記事リンク</a>'; msg[10] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/14/144137">ランダム記事リンク</a>'; msg[11] = '<a href="https://vip-de-marika.hatenablog.jp/entry/2022/03/14/134603">ランダム記事リンク</a>'; ︙ 以下略 // 設定終了 var no = Math.floor(Math.random() * msg.length); // 表示 document.write(msg[no]); // --> </script>
👆これをはてなブログのデザイン設定のサイドバーのモジュールを追加のHTMLに貼り付けて適用保存して完成。
URLの量が膨大なのでエクセルで文字列結合して作ってます。
ランダム記事リンクを画像にするならaタグの中にimgタグ入れれば出来るはず。画像ください。