プログラム言語ごとにスパイダリングをやってみないと気がすまない症候群(?)の代表ですw。Pythonを使って、自分のはてブのページから、各ブックマークのURLとタイトルをファイルにおとしこむプログラム書きました。
# -*- coding : utf-8 -*- from BeautifulSoup import BeautifulSoup from urllib2 import urlopen b=BeautifulSoup f = urlopen("http://b.hatena.ne.jp/syou6162/python") data=f.read() data=unicode(data,'UTF-8') data=b(data) f=open("./hatebu.txt","w") for tagName in data.findAll('dt'): if(tagName.attrs[0][1]=="bookmark"): f.write(tagName.find("a").attrs[0][1]+"\n") f.write(tagName.find("a").string.encode("utf-8")+"\n") f.close()
コードが汚いとか、そういうのは今回は後回しにするとして、なんとも納得いかないところがあります。
f.write(tagName.find("a").string.encode("utf-8")+"\n")
ここの部分なんですが、encode("utf-8")のところをなくしたいと思っています。が、なくしたら以下のようなエラーが出てきてしまいます。
Traceback (most recent call last):
File "test.py", line 13, in ?
f.write(tagName.find("a").string+"\n")
UnicodeEncodeError: 'ascii' codec can't encode character u'\u3068' in position 7: ordinal not in range(128)
かっちょいい対処方法を知ってる人、ぜひとも添削をお願いいたします><
うーむ、文字コード関係につまってばっかりではないか。Pythonのプログラムは楽しいのだが、文字コードのところが面倒すぎる。。。