在python中搜索普通话网站 - 字符显示不正确

时间:2014-01-09 15:57:59

标签: python utf-8

我正在使用python和BeautifulSoup来抓取包含普通话文本的网页。我的终端和文本编辑器都能显示UTF-8 - 即中文普通话字符 - 但是当我从这个页面(也是UTF-8)获取文本并将其打印到终端或保存到文件(使用编解码器)时,python将其标识为“unicode”类型,但文本显示为奇怪的字符。如何修复文本显示?

实施例: 岁末年终欢乐的派对季节又来了!!!! 显示为 æ²æ«å¹'çμæ¡æ¨çæ'¾å°的£ç¯åä¾äº!!!!

Page:http://charlotteball52.pixnet.net/blog

以下是我的代码的相关部分 -

from bs4 import BeautifulSoup
import codecs
import requests

my_file = codecs.open('cb.txt', 'w', 'utf-8')
r  = requests.get("http://charlotteball52.pixnet.net/blog/post/170602875")
data = r.text
soup = BeautifulSoup(data)
mandarin = u""

for text in soup.find_all('div', class_="article-content-inner"):
    mandarin = text.get_text()
    # Both print and my_file.write produce the strange characters
    print mandarin                  
    my_file.write(mandarin)          

my_file.close()

更新:使用urllib2打开网址可以防止字符被破坏。仍然不确定为什么它搞砸了,但这是一种解决方法:

pagecontent = urllib2.urlopen("http://charlotteball52.pixnet.net/blog/post/170602875")
soup = BeautifulSoup(pagecontent.read().decode("utf8"))

0 个答案:

没有答案