私は次のスクリプトをいじくり回しています。
# -*- coding: utf8 -*-
import codecs
from BeautifulSoup import BeautifulSoup, NavigableString,
UnicodeDammit
import urllib2,sys
import time
try:
import timeoutsocket # http://www.timo-tasi.org/python/timeoutsocket.py
timeoutsocket.setDefaultSocketTimeout(10)
except ImportError:
pass
h=u'\u3000\u3000\u4fe1\u606f\u901a\u4fe1\u6280\u672f'
address=urllib2.urlopen('http://stock.eastmoney.com/news/1408,20101022101395594.html').read()
soup=BeautifulSoup(address)
p=soup.findAll('p')
t=p[2].string[:10]
次の出力で:
印刷t
¡¡¡¡ÐÅϢͨ
印刷h
信息通</p>
t
u'\ xa1 \ xa1 \ xa1 \ xa1 \ xd0 \ xc5 \ xcf \ xa2 \ xcd \ xa8'
h
u'\ u3000 \ u3000 \ u4fe1 \ u606f \ u901a'
h.encode('gbk')
'\ xa1 \ xa1 \ xa1 \ xa1 \ xd0 \ xc5 \ xcf \ xa2 \ xcd \ xa8'
簡単に言えば、このhtmlをBeautifulSoupに渡すと、gbkでエンコードされたテキストを受け取り、最初にデコードする必要があることを認識せずに、Unicodeであると見なします。「h」と「t」は同じである必要がありますが、hは私がhtmlファイルからテキストを取得して手動で変換するだけなのでです。
この問題を解決するにはどうすればよいですか?
一番
ウィートン