ルシュールクミオ (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)
すっきりしたー!(^◇^)ありがとうございます!!