使用 lxml 有效地解析元标记?
Posted
技术标签:
【中文标题】使用 lxml 有效地解析元标记?【英文标题】:Parsing meta tags efficiently with lxml? 【发布时间】:2011-12-29 19:18:48 【问题描述】:我正在使用 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')
但是感觉效率不是很高。
【问题讨论】:
【参考方案1】:您可以使用这个 XPath 选择器://meta[@property='og:locality']/@content
【讨论】:
你错过了@content
不? tree = fromstring(html_data) tree.xpath("//meta[@property='og:locality']/@content")
【参考方案2】:
我认为 lxml 支持大多数 CSS 选择器,所以你可以使用 attribute selector:
doc3.cssselect('meta[property="og:locality"]')[0].get('content')
【讨论】:
【参考方案3】:如果您愿意使用另一个纯 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']
哪个会输出:
“底特律”
【讨论】:
以上是关于使用 lxml 有效地解析元标记?的主要内容,如果未能解决你的问题,请参考以下文章
使用 python 解析 HTML 表 - HTMLparser 或 lxml