読者です 読者をやめる 読者になる 読者になる

Screaming Loud

研究・プログラミングなど気づいたことをメモをしています

beautifulsoupをクラスにしてみた.

モジュール:wrap.py を作ってみた.

# -*- coding:utf-8 -*-                                                                                                                                                
import BeautifulSoup
import re
import urllib2
import sys
from html5lib import HTMLParser,treebuilders

    #urlを開く関数                                                                                                                                                      
def open_url(html):
    opener = urllib2.build_opener()#クライアントを作成                                                                                                                  
    opener.addheaders = [('User-Agent','Mozilla/5.0(Windows; U; Windows NT 5.1; ja; rv:1.9.0.6) Gecko/2009011913 Firefox/3.0.6')]
    return opener.open(html).read()

    #beautifulsoupでエラーを吐いたときhtml5libを利用.                                                                                                                  
    #インスタンスsoupを返す                                                                                                                                             
def get_soup(source):
    try:
        soup = BeautifulSoup.BeautifulSoup(source)
    except:
         parser = HTMLParser(tree=treebuilders.getTreeBuilder("beautifulsoup"))
         soup = parser.parse(source)
    return soup

class GetSoup(object):
    def __init__(self,url):
        self.url = url
        self.tree = get_soup(open_url(self.url))

これで別のファイル(同じ階層)から下のようにアクセスすれば

import wrap

url = "http://search.yahoo.co.jp/search?p="
query = "日本語"

print wrap.GetSoup(url+query)

Yahoo!の「日本語」の検索結果をHTMLの形式で表示させることが出来る.