我使用urllib2.urlopen来获取一个url并获取诸如“charset”、“content length”之类的头信息。
但是有人把他们的字符集设置成
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
urllib2不会为我解析这个。
是否有任何内置工具可用于获取http-equiv信息?
编辑:
这就是我从页面解析charset的方法

elem = lxml.html.fromstring(page_source)
content_type = elem.xpath(
        ".//meta[translate(@http-equiv, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz')='content-type']/@content")
if content_type:
    content_type = content_type[0]
    for frag in content_type.split(';'):
        frag = frag.strip().lower()
        i = frag.find('charset=')
        if i > -1:
            return frag[i+8:] # 8 == len('charset=')

return None

我该如何改进?我可以预编译xpath查询吗?

最佳答案

是啊!任何html解析库都会有帮助。
BeautifulSoup是基于sgmllib的纯python库,
lxml是用c编写的更有效的替代python库
试试他们中的任何一个。他们会解决你的问题。

10-08 19:14