No.2504 はてなダイアリの記事の数を数える

追記

elve.hatenadiary.jp
にもっとスッキリしたコードがあります
====追記終了====

URLは適時変えてくれ

わしのダイアリは1432記事だったようじゃよ。
突っ込みあればよろしくじゃよ。

はてダ 1432
ダメシ 1016
ここ 56*1
合計 2504

たまにチェックしないと危ないなw

追記

No.2504 はてなダイアリの記事の数を数える – スナックelve 本店

lxmlとrequests(意味分からないけど)追加で入れ、どうにかコード実行できました。スクレイピングなかなか面白そう。pythonはおろかまともなプログラミング言語を触ったことがない私ができるのかは疑問だけど…。

2018/03/21 22:03


lxmlとrequests(意味分からないけど)追加で入れ、どうにかコード実行できました。スクレイピングなかなか面白そう。pythonはおろかまともなプログラミング言語を触ったことがない私ができるのかは疑問だけど…。 – bg4kids のブックマーク / はてなブックマーク
おぉ、そうだった。書き忘れていた。ありがとうございます。
Beautifulsoupのほかに

pip install requests
pip install lxml

を実行してインストールしてください。

Visual Studio Code ではターミナルってタブクリックして入力するとインストールされました。
f:id:elve:20180322210038p:plain

ソース

# 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:含むこの記事

どのくらい面白かった?

星を押して送信してね

平均 0 / 5. Vote count: 0

是非フォローしてください

最新の情報をお伝えします

2件のコメント

  • 触発されて、勉強がてら自分のはてなブログの記事も数えてみました。
    プロフィールページを見れば記事数あるので意味ないけれど…。
    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

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です