html - XPath - 除标题中的元素外的所有元素

标签 html xpath web-scraping

试图弄清楚XPATH匹配除 header 之外的所有元素或在 header 内.假设可以通过三个条件检测到 header :

  • 外部标签是 header例如。 <header><div.....></header>
  • 外部标签有 id其中包含字符串“header”
  • 外部标签有 class其中包含字符串“header”

  • 我的 xpath://*[not(ancestor::header)] and //*[not(ancestor::*[contains(@id,"header")])] and //*[not(ancestor::*[contains(@class,"header")])]
    是不正确的。

    编辑:
    这应该匹配 header 内的所有链接:
    //*[ancestor::*[contains(@id,"header") or contains(@class,"header") or header]]
    

    现在我想获取除这些之外的所有元素。

    你知道如何让它工作吗?

    最佳答案

    原始 XPath 中的每个表达式都被单独评估,测试 XML 文档中是否存在满足这些条件的元素,并返回 boolean() .

    现在您已经组合了谓词以选择您不想要的特定元素,您只需要否定测试:

    //*[not(ancestor-or-self::header) and 
        not(ancestor::*[contains(@id,"header") or contains(@class,"header")])
       ]
    

    关于html - XPath - 除标题中的元素外的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49220574/

    相关文章:

    html - 显示内联创建不一致的宽度 IE 11

    html - html5图片标签和Bootstrap如何结合使用

    java - 用于从 AWIS (Alexa.com) XML 数据中提取信息的 XPath 表达式

    如果节点不存在,XPath 返回默认值

    ruby - 如何查找以字符串形式给出确切 HTML 标记的节点(使用 Nokogiri)?

    javascript - JQuery Accordion 面板大小调整

    javascript - 如何将插入符号所在位置的值设置为一个值 [Javascript]

    python - 使用 selenium 在 nytimes.com 上单击 "show more"按钮

    python-3.x - 如何从网页的图形中提取数据?

    python - div 在使用 BeautifulSoup 抓取价格时返回空,其他所有内容(如标题、图片链接)返回一个值。为什么会发生这种情况?