外套とdoyagao

短剣は銃刀法に触れるので、ドヤ顔で

増田(AnonymousDiary)の、はてブ数カウントスクリプト

よ、お屠蘇は飲んだか?
正月はまあ、挨拶したりのんびりしたり、なんだか良くわからんテンションになるな。

id:yuta25
増田ディグるツールほすぃ 2014/01/01

こういうスクレイピングのこと、ディグるって言うのな。正月から一個覚えたよ。
めんどかったからPython3.xでざらっと書いたヤツまんまでツールにゃなってねぇけど、張っとくから使ってくれ。
まあ、誰かまともなプログラマにツールリクエストした方が良いかもしれんが、とりあえず動くヨ。

idとpasswordと何ページ分チェックしたいか入れてくれ。
はてな匿名ダイアリーにログインしたあと、『User IDの日記』とか出るだろ?あそこのページ数な。

ログインして、日記のPermalinkからリスト作って、はてなブックマーク件数取得API使って数えてる。
オレはエクセルで数字見ようと思ったから、取り合えずタブ区切りで出力してる。
そのへんはテキトーにやっとくれ。わからんかったらテキトーに聞いてくれ。
じゃ、だらだら良いお正月を!

# -*- encoding: utf-8 -*-

from html.parser import HTMLParser
import urllib.parse, http.cookiejar, urllib.request
import time

class MasudaParser(HTMLParser):
    def __init__(self):
        HTMLParser.__init__(self)
        self.links = []
        self.tmpurl = ''

    def handle_starttag(self, tag, attrs):
        if tag == 'a':
            self.tmpurl = attrs[0][1]

    def handle_data(self, data):
        if data == 'Permalink':
            self.links.append(self.tmpurl)

#
#
#
id = 'User ID'
password = 'Password'
pages = 10

#
# hatelabo login
#
formData = {'key':id, 'password':password, 'mode':'enter'}
params = urllib.parse.urlencode(formData).encode('utf-8')
cookie = urllib.request.HTTPCookieProcessor(http.cookiejar.CookieJar())
opener = urllib.request.build_opener(cookie)
res = opener.open('https://www.hatelabo.jp/login', params)

#
# AnonymousDiary list
#
parser = MasudaParser()
for page in range(1, pages+1):
    time.sleep(3)
    res = opener.open('http://anond.hatelabo.jp/'+id+'/?page=' + str(page))
    parser.feed(res.read().decode('utf-8'))

#
# Count Hatebu
#
for item in parser.links:
    masuda = 'http://anond.hatelabo.jp' + item
    apiurl = 'http://api.b.st-hatena.com/entry.count?url=' + masuda
    time.sleep(3)
    res = urllib.request.urlopen(apiurl)
    print(masuda, '\t', res.read().decode('utf-8'))