Cheerio:class 选择器是否有类似 endsWith 的东西?

Cheerio: Is there anything like endsWith for a class selector?

我正在尝试提取 class 名称以 -name 结尾的网页上的所有链接。

console.log($('a.-name', html).text().trim());

有没有像正则表达式这样的方法可以达到同样的效果?

console.log($('a.*-name', html).text().trim());

您可以使用 [class$="-name"] syntax 查找以 -name 结尾的 class 属性。然后,您可以将匹配项过滤为仅包含 a 标签的匹配项。

console.log($('[class$="-name"]').filter('a').text());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div class="foo-name">foo-name</div>
<div class="nothing">nothing</div>
<div>
   <a class="fee-name" href="/">fee-name</a>
</div>

但是,由于这是原始属性搜索,如果同一标签上还有其他 class 名称并且它们在您定位的名称之后,则它将无法工作。

为了解决这个问题,我没有看到任何内置的方法来做到这一点。您可能必须收集所有 a 标签,然后编写您自己的过滤器函数以使用您自己的代码检查 class name 属性。