用lxml高效解析meta标签?

11 投票
3 回答
5134 浏览
提问于 2025-04-17 06:23

我正在用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')

撰写回答