对于某些网站,urllib2 getparam charset返回None

时间:2014-09-02 13:25:09

标签: python character-encoding urllib2

我现在正在努力解决这个问题。对于某些网站,以下代码段会返回None,即使字符集中包含charset,因此它似乎不是获取网页的正确字符集的可靠方法。

conn = urllib2.urlopen(req)
charset = conn.headers.getparam('charset')

我在SO上阅读了几个线程,有些人提到使用chardet,但我不想在可能的情况下导入额外的模块。相反,我正在考虑只下载标题并使用一些字符串函数获取字符集信息。

有没有人有更好的主意?

2 个答案:

答案 0 :(得分:2)

conn.headers.getparam('charset')无法解析html内容(<meta>标记),它只在http标题中显示(例如,Content-Type)。

如果未在http标头中指定,则可以use an html parser to get the character encoding

答案 1 :(得分:0)

在此处移动我的评论并将其作为答案发布。

感谢@ J.F。 Sebastian我可以使用下面的代码片段从meta标签中获取charset:

conn = urllib2.urlopen(url)
site = parse(conn).getroot()
charset = site.cssselect('meta[http-equiv="Content-Type"]')[0].get('content').split("chars‌​et=",1)[1]