スナックelve 本店

バツイチ40代女の日記です

No.2511 はてなブログの記事の数を数える(by bg4kids)/はてダの記事も

ルシュールクミオ (id:bg4kids)さんからコメント欄にいただいたソースがもったいないので共有。
私の言葉足らずな記事でもちゃんと伝わっていて嬉しい。
URLはここに変えてあります。適時変更してください。

# coding: UTF-8

import requests
from bs4 import BeautifulSoup

page= 1 #読み込み開始ページ
entry = 1 #記事のカウント用(whileが最初で終了しないための初期値)
entrysum = 0	#記事の合計

while entry>0: #エントリーがある場合のみ処理
    target_url ='https://elve.hatenadiary.jp/archive?page=' 
    r = requests.get(target_url+ str(page) ) #requestsを使って、webから取得
    soup = BeautifulSoup(r.text, 'lxml') #要素を抽出

    entry = len( soup.find_all('a', class_="entry-title-link"))

    entrysum = entrysum + entry 
    page += 1 
print (entrysum)

結果もばっちり★

62

私ははてなダイアリのarchiveページの「古い50日分>」ってのがあるかないかで最後を判定していたので、それがなかった場合はエラーが起きる←エラーが起きるかどうかで最終ページ判定ってしてたんだよね。
美しくなかった。
URLに+ページ要素で、そのページにエントリが有るかないか数えた方が綺麗だった。
修正してみよう。

# coding: UTF-8

import requests
from bs4 import BeautifulSoup

page= 0 #読み込み開始ページ
entry = 1 #記事のカウント用(whileが最初で終了しないための初期値)
entrysum = 0	#記事の合計

while entry>0: #エントリーがある場合のみ処理
    target_url ='http://d.hatena.ne.jp/elve/archive?word=&of=' 
    r = requests.get(target_url+ str(page) ) #requestsを使って、webから取得
    soup = BeautifulSoup(r.text, 'lxml') #要素を抽出
    #<li class="archive archive-section">を数える
    entry = len(soup.find_all('li',class_="archive archive-section"))
    entrysum += entry
    #次のページのurl用
    page += 50
#結果出力
print (entrysum)

すっきりしたー!(^◇^)ありがとうございます!!