サイドバーの情報をターミナルに出力する

Webのサイドバーの情報をスクレイピングする必要があったので、作ってみた。 requests、beautifulsoupとStackoverflowから拝借。。

import requests
from bs4 import BeautifulSoup
import pprint


class MyPrettyPrinter(pprint.PrettyPrinter):
    def format(self, object, context, maxlevels, level):
        if isinstance(object, unicode):
            return (object.encode('utf8'), True, False)
        return pprint.PrettyPrinter.format(
            self, object, context, maxlevels, level)


top_level_url = "[url名]"

r = requests.get(top_level_url)
soup = BeautifulSoup(r.text.encode(r.encoding), "lxml")
checklist = soup.find(id='[id名]').find_all('li')

data = dict()
f = ''

for li in checklist:
    word = li.span.text
    order = int(li.input.get('[属性1]'))
    flag = li.input.get('属性2')
    f = data.setdefault(flag, dict())
    f = data[flag].setdefault(order, word)

MyPrettyPrinter().pprint(data)

Requests: 人間のためのHTTP — requests-docs-ja 1.0.4 documentation

stackoverflow.com