使用lxml有效解析元标记?

时间:2011-11-15 18:54:59

标签: python screen-scraping css-selectors web-scraping lxml

我正在使用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 :(得分:8)

您可以使用此XPath选择器://meta[@property='og:locality']/@content

答案 1 :(得分:4)

我认为lxml支持大多数CSS选择器,因此您可以使用attribute selector

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

答案 2 :(得分: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']

哪个会输出:

“底特律”