小编Whe*_*ton的帖子

Python - BeautifulSoup html解析处理gbk编码很差 - 中文webscraping问题

我一直在修补以下脚本:

#    -*- 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]
Run Code Online (Sandbox Code Playgroud)

具有以下输出:

打印

¡¡¡¡戴¢我

打印h

信息通

Ť

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'

简单地说:当我通过BeautifulSoup传递这个html时,它采用gbk编码的文本并认为它是unicode,而不是认识到它需要先解码.然而,"h"和"t"应该是相同的,因为h只是我从html文件中获取文本并手动转换它.

我该如何解决这个问题?

最好

惠顿

python unicode beautifulsoup unicode-string web-scraping

2
推荐指数
1
解决办法
3234
查看次数