我现在正在努力解决这个问题。对于某些网站,以下代码段会返回None
,即使字符集中包含charset,因此它似乎不是获取网页的正确字符集的可靠方法。
conn = urllib2.urlopen(req)
charset = conn.headers.getparam('charset')
我在SO上阅读了几个线程,有些人提到使用chardet
,但我不想在可能的情况下导入额外的模块。相反,我正在考虑只下载标题并使用一些字符串函数获取字符集信息。
有没有人有更好的主意?
答案 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("charset=",1)[1]