我使用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库
试试他们中的任何一个。他们会解决你的问题。