代码之家  ›  专栏  ›  技术社区  ›  Benjamin Wohlwend

etree.findall:'或'-查找?

  •  1
  • Benjamin Wohlwend  · 技术社区  · 16 年前

    lxml.etree.findall . 这可以简单到

    elems = tree.findall('link[@rel="stylesheet"]') + tree.findall('style')
    

    <link rel="stylesheet" type="text/css" href="/media/css/first.css" />
    <style>body:{font-size: 10px;}</style>
    <link rel="stylesheet" type="text/css" href="/media/css/second.css" />
    

    如果 style 标记应用在两个 link 标记,则结果可能与按定义顺序应用规则的结果完全不同。

    link[@rel="stylesheet"] 风格

    1 回复  |  直到 16 年前
        1
  •  3
  •   MattH    16 年前

    可能使用XPATH:

    data = """<link rel="stylesheet" type="text/css" href="/media/css/first.css" />
    <style>body:{font-size: 10px;}</style>
    <link rel="stylesheet" type="text/css" href="/media/css/second.css" />
    """
    
    from lxml import etree
    
    h = etree.HTML(data)
    
    h.xpath('//link[@rel="stylesheet"]|//style')
    
    [<Element link at 97a007c>,
     <Element style at 97a002c>,
     <Element link at 97a0054>]