snuffkinの遊び場

IT関係、スポーツ、数学等に関することを、気が向いたときに書いてます。

はてなキーワード一覧

はてなキーワードAPIを使って、指定された文字を含む「はてなキーワード」の一覧を表示するpythonのプログラムを作ってみました。
search_keyword('鈴木')を実行すれば、「鈴木」を含むはてなキーワードの一覧が表示されます。ただし、「10番目の鈴木は誰だ?」を目標に作っているため、引数に指定したキーワード自身(ここでは「鈴木」)は除かれたリストになります。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import urllib
from BeautifulSoup import BeautifulSoup

def search_keyword(keyword):
    loadedPageIndex = 1
    rss = _get_rss(keyword, loadedPageIndex)
    soup = BeautifulSoup(rss)

    # summary of results
    totalresults = int(soup.channel.contents[12].next)
    startindex = int(soup.channel.contents[14].next)
    itemsperpage = int(soup.channel.contents[16].next)
    loadedItemIndex = itemsperpage

    # get 1st page data
    data = list()
    _append_item(data, rss, keyword)

    # get other page data
    while loadedItemIndex < totalresults:
        rss = _get_rss(keyword, loadedPageIndex + 1)
        _append_item(data, rss, keyword)
        loadedItemIndex += itemsperpage
        loadedPageIndex += 1

    # display result
    for item in data:
        print item
    print len(data)

def _get_rss(keyword, page):
    qouted_keyword = urllib.quote_plus(keyword)
    url = 'http://search.hatena.ne.jp/keyword?word=' + qouted_keyword + '&mode=rss2&ie=utf8&page=' + str(page)
    rss = urllib.urlopen(url).read()
    return rss

def _append_item(data, rss, exclude_keyword=''):
    soup = BeautifulSoup(rss)
    items = soup.findAll('item')
    for item in items:
        title = item.title.next
        if title != exclude_keyword:
            data.append(title)

これを使って、Googleから検索結果を取ってくれば、ランキングが作れますね。