使用 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

Python3网络爬虫实战-3数据库的安装:MySQLMongoDBRedis

使用 jsoup 库解析 html 元标记

有效地解析具有部分的大量日志

美丽的汤在源文件中找到标记的位置?

实际有效的 Python html 解析