No.2504 はてなダイアリの記事の数を数える
2018年3月21日
追記
elve.hatenadiary.jp
にもっとスッキリしたコードがあります
====追記終了====
URLは適時変えてくれ
わしのダイアリは1432記事だったようじゃよ。
突っ込みあればよろしくじゃよ。
| はてダ | 1432 |
| ダメシ | 1016 |
| ここ | 56*1 |
| 合計 | 2504 |
たまにチェックしないと危ないなw
追記
No.2504 はてなダイアリの記事の数を数える – スナックelve 本店
lxmlとrequests(意味分からないけど)追加で入れ、どうにかコード実行できました。スクレイピングなかなか面白そう。pythonはおろかまともなプログラミング言語を触ったことがない私ができるのかは疑問だけど…。
lxmlとrequests(意味分からないけど)追加で入れ、どうにかコード実行できました。スクレイピングなかなか面白そう。pythonはおろかまともなプログラミング言語を触ったことがない私ができるのかは疑問だけど…。 – bg4kids のブックマーク / はてなブックマーク
おぉ、そうだった。書き忘れていた。ありがとうございます。
Beautifulsoupのほかに
pip install requests pip install lxml
を実行してインストールしてください。
Visual Studio Code ではターミナルってタブクリックして入力するとインストールされました。
ソース
# coding: UTF-8 import requests from bs4 import BeautifulSoup # アクセスするURL url = "http://d.hatena.ne.jp/elve/archive" # URLにアクセスする htmlが帰ってくる(タグ付き) html = requests.get(url) #requestsを使って、webから取得 # htmlをBeautifulSoupで扱う soup = BeautifulSoup(html.text,'lxml') cnt = 0 while True: #<div class="day">の #<li class="archive archive-section">を #数える lsSectionsDiv = soup.find('div',class_="day") lsSections = lsSectionsDiv.find_all('li',class_="archive archive-section") #要素数 cnt = cnt + len(lsSections) #次のページを取得 pageDiv = soup.find('div', class_="calendar", id="pager-top") page = pageDiv.find('a', class_="prev") if(page==""): #ここはこないはず break else: #requestsを使って、webから取得 try: url = page['href'] html = requests.get(url) # htmlをBeautifulSoupで扱う soup = BeautifulSoup(html.text,'lxml') except: #次のページがないとき=最後のページ #ループを抜ける break pass print(cnt)
*1:含むこの記事
是非フォローしてください
最新の情報をお伝えします
触発されて、勉強がてら自分のはてなブログの記事も数えてみました。
プロフィールページを見れば記事数あるので意味ないけれど…。
physonはインデントにちゃんと意味があったんですね。私はしばらくこれが分からずハマっていました。
—————————–
# coding: UTF-8
import requests
from bs4 import BeautifulSoup
page= 1 #読み込み開始ページ
entry = 1 #記事のカウント用(whileが最初で終了しないための初期値)
entrysum = 0 #記事の合計
while entry>0: #エントリーがある場合のみ処理
target_url =’http://www.boardgamepark.com/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)
おぉ~すごーい!!
そうなんですよ。インデント! 説明不足ですみません。
こんなつたない説明なのに乗ってくれてありがとうございます!!
私ブログは断念してしまったw