これから研究でぶち当たっていきそうなのでとりあえずメモ。
結果から言うと単純に例外処理で該当部分を書き換えてしまえばいいのだ。
#!/usr/bin/env python # -*- coding: utf-8 -*- import urllib2 from BeautifulSoup import BeautifulSoup from HTMLParser import HTMLParseError def fix_html(html): #UTF8に強制変換 html = html.encode("utf-8") try: soup = BeautifulSoup(html) return soup except HTMLParseError,e: emsg = e.msg #無理矢理、問題の該当箇所を抽出し空文字列に置換 emsg_start = emsg.find('u"') rpl_str = eval(emsg[emsg_start:]).encode("utf-8") html = html.replace(rpl_str,u"") #再帰的処理 return fix_html(html) except e: raise e def main(): try: set_url = "#適宜URLを" html = urllib2.urlopen(set_url).read() print fix_html(html) except urllib2.HTTPError, e: e.code, e.msg print "%s is not existed." % set_url if __name__ == '__main__': main()
こんな感じだろうか。
やってはいけないことをしています。それは問題箇所を無理矢理抽出して置換していることです。
なにか良い方法あると思いますが、考えつかなかったのでこんなかんじにしちゃいました^^;
やってはいけないことをしています。それは問題箇所を無理矢理抽出して置換していることです。
なにか良い方法あると思いますが、考えつかなかったのでこんなかんじにしちゃいました^^;
0 コメント:
Post a Comment