Cheerio: есть ли что-то вроде заканчивается с селектором класса? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь извлечь все ссылки на веб-странице, имя класса которой оканчивается на -name.

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

Есть ли какой-нибудь способ, которым можно использовать regex?

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

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете использовать синтаксис [class$="-name"] , чтобы найти атрибут класса, который заканчивается на -name. Затем вы можете отфильтровать совпадения только по тем тегам, которые 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>

Но, поскольку это необработанный поиск атрибутов, он не будет работать, если в том же теге есть другие имена классов и они идут после того, который вы нацелены.

Чтобы покрыть это, я не вижу встроенного способа сделать это. Возможно, вам придется собрать все теги a, а затем написать собственную функцию фильтра для проверки атрибута имени класса с вашим собственным кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...