用lxml高效解析meta标签?
我正在用lxml解析HTML页面。这些页面有一些元标签,格式如下:
<meta property="og:locality" content="Detroit" />
<meta property="og:country-name" content="USA" />
我该如何使用lxml高效地找到每个页面中og:locality
这个元标签的值呢?
我现在的做法是手动匹配元标签的属性,代码如下:
for meta in doc3.cssselect('meta'):
prop = meta.get('property')
if prop === 'og:locality':
lat = meta.get('content')
不过这样做感觉效率不高。
3 个回答
0
如果你愿意使用另一个纯Python的库,gazpacho可能是个不错的选择...
from gazpacho import Soup
html = """\
<meta property="og:locality" content="Detroit" />
<meta property="og:country-name" content="USA" />
"""
soup = Soup(html)
要提取你想要的内容,你只需要这样请求:
soup.find("meta", {"property": "og:locality"}).attrs['content']
这样就会输出:
'底特律'
13
你可以使用这个XPath选择器://meta[@property='og:locality']/@content
8
我觉得lxml支持大部分的CSS选择器,所以你可以使用一种叫做属性选择器的东西:
doc3.cssselect('meta[property="og:locality"]')[0].get('content')