如何检查 xpath 中的节点是否有某个子节点 x 但也没有子节点 y
How to check if a node in xpath has a certain child x but also doesn't have a child y
我正在尝试获取给定 github 用户的非分叉存储库。目前,我设法通过此 xpath 查询获取了所有存储库:
parser.xpath("//ul[@data-filterable-for='your-repos-filter']/li/div/div/h3/a/@href").map{|repository| ...}
关键是我需要过滤掉最后一个div的下一个'sibling'是不是一个span
,类似于:
parser.xpath("//ul[@data-filterable-for='your-repos-filter']/li/div/div/h3 and not span/a/@href").map{|repository| ...}
我正在寻找的 HTML 是 following(检查其中一个分叉的存储库):
<li class="col-12 d-flex width-full py-4 border-bottom public fork" itemprop="owns" itemscope itemtype="http://schema.org/Code">
<div class="col-10 col-lg-9 d-inline-block">
<div class="d-inline-block mb-1">
<h3 class="wb-break-all">
<a href="/DominikAngerer/rails-boilerplate" itemprop="name codeRepository" >
rails-boilerplate</a>
</h3>
<span class="f6 text-gray mb-1">
Forked from <a class="muted-link" href="/polomasta/rails-boilerplate">polomasta/rails-boilerplate</a>
</span>
</div>
<div>
<p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">
Ruby on Rails Storyblok Starter Boilerplate
</p>
</div>
什么时候不是分叉的仓库,我要找的,没有这样的<span class="f6 text-gray mb-1">
是否可以这样查询,如果可以怎么办?
您可以使用以下 XPath 来 select 非分支存储库的链接:
//div[@class="d-inline-block mb-1"][not(./span[contains(.,"Forked from")])]//@href
的 17 个节点
我正在尝试获取给定 github 用户的非分叉存储库。目前,我设法通过此 xpath 查询获取了所有存储库:
parser.xpath("//ul[@data-filterable-for='your-repos-filter']/li/div/div/h3/a/@href").map{|repository| ...}
关键是我需要过滤掉最后一个div的下一个'sibling'是不是一个span
,类似于:
parser.xpath("//ul[@data-filterable-for='your-repos-filter']/li/div/div/h3 and not span/a/@href").map{|repository| ...}
我正在寻找的 HTML 是 following(检查其中一个分叉的存储库):
<li class="col-12 d-flex width-full py-4 border-bottom public fork" itemprop="owns" itemscope itemtype="http://schema.org/Code">
<div class="col-10 col-lg-9 d-inline-block">
<div class="d-inline-block mb-1">
<h3 class="wb-break-all">
<a href="/DominikAngerer/rails-boilerplate" itemprop="name codeRepository" >
rails-boilerplate</a>
</h3>
<span class="f6 text-gray mb-1">
Forked from <a class="muted-link" href="/polomasta/rails-boilerplate">polomasta/rails-boilerplate</a>
</span>
</div>
<div>
<p class="col-9 d-inline-block text-gray mb-2 pr-4" itemprop="description">
Ruby on Rails Storyblok Starter Boilerplate
</p>
</div>
什么时候不是分叉的仓库,我要找的,没有这样的<span class="f6 text-gray mb-1">
是否可以这样查询,如果可以怎么办?
您可以使用以下 XPath 来 select 非分支存储库的链接:
//div[@class="d-inline-block mb-1"][not(./span[contains(.,"Forked from")])]//@href
的 17 个节点