使用lxml高效解析元标签?

问题描述 投票:0回答:3

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

但是感觉效率不是很高。

python web-scraping css-selectors lxml
3个回答
14
投票

您可以使用此 XPath 选择器:

//meta[@property='og:locality']/@content


8
投票

我认为lxml支持大多数CSS选择器,所以你可以使用属性选择器

doc3.cssselect('meta[property="og:locality"]')[0].get('content')

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']

哪个会输出:

“底特律”

© www.soinside.com 2019 - 2024. All rights reserved.