2011-03-31 38 views
0

我在使用网站编码时遇到问题。我制作了一个程序来抓取一个网站,但我没有成功地改变收录内容的编码。我的代码是:检测并更改python中的网站编码

import sys,os,glob,re,datetime,optparse 
import urllib2 

from BSXPath import BSXPathEvaluator,XPathResult 
#import BeautifulSoup 

#from utility import * 

sTargetEncoding = "utf-8" 

page_to_process = "http://www.xxxx.com" 
req = urllib2.urlopen(page_to_process) 
content = req.read() 
encoding=req.headers['content-type'].split('charset=')[-1] 
print encoding 

ucontent = unicode(content, encoding).encode(sTargetEncoding) 
#ucontent = content.decode(encoding).encode(sTargetEncoding) 
#ucontent = content 

document = BSXPathEvaluator(ucontent) 

print "ORIGINAL ENCODING: " + document.originalEncoding 

我使用外部库(BSXPath BeautifulSoap的扩展)和document.originalEncoding打印网页的编码,而不是UTF-8编码,我试图改变。 有没有人建议?

感谢

回答

0

好了,也不能保证通过HTTP头提供的编码是相同的HTML本身内部的一些规定。这可能是由于服务器端配置错误或HTML内部的字符集定义错误造成的。真的没有自动的方法来检测编码或检测编码的。我建议手动检查HTML编码是否正确(例如,可以轻松检测到iso-8859-1与utf-8),然后在您的应用程序中以手动方式硬编码编码。