【问题标题】:Parsing meta tags efficiently with lxml?使用 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')

但是感觉效率不是很高。

【问题讨论】:

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


    【解决方案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']
      

      哪个会输出:

      “底特律”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-20
        • 2011-12-16
        • 1970-01-01
        • 1970-01-01
        • 2011-04-03
        • 1970-01-01
        相关资源
        最近更新 更多