我已经为这事挣扎了一段时间了。下面的代码片段返回一些网站的None,即使字符集显示在头的元中,所以它似乎不是获取网页适当字符集的可靠方法。
conn = urllib2.urlopen(req)
charset = conn.headers.getparam('charset')我在这里读了几个线程,有些提到要使用chardet,但如果可能的话,我不想导入额外的模块。相反,我想只下载标题,并使用一些字符串函数获取字符集信息。
有谁有更好的主意吗?
发布于 2014-09-02 13:32:02
conn.headers.getparam('charset')不解析html内容(<meta>标记),它只在headers (例如Content-Type)中显示。
如果没有在http标头中指定use an html parser to get the character encoding,则可以使用它。
发布于 2014-09-03 11:50:46
将我的评论移到这里,并将其作为回复发布。
多亏了@J.F.Sebastian,我可以使用下面的代码片段从meta标记中获得字符集:
conn = urllib2.urlopen(url)
site = parse(conn).getroot()
charset = site.cssselect('meta[http-equiv="Content-Type"]')[0].get('content').split("charset=",1)[1]https://stackoverflow.com/questions/25624522
复制相似问题