Как веб-паук мог просканировать содержимое ::before?

Содержимое псевдоэлемента, такого как ::before или ::after, фактически не существует в дереве DOM. Таким образом, невозможно найти его по селектору.

Вопрос в том, как я могу извлечь содержимое в нем? Например:

<div>This is <span></span>n apple.</div>
...
span::before {
    content : "a"
}

shows : This is an apple.

Но если я извлеку текст div, я получу только This is n apple. без содержания в span::before.

Как я мог справиться с этой проблемой?


person Sraw    schedule 05.04.2017    source источник


Ответы (1)


Как я мог справиться с этой проблемой?

Честно говоря, не используя псевдоэлементы для этой цели.

Псевдоэлемент специально разработан для отображения содержимого за пределами дерева документа.

Этот «сгенерированный контент», определяемый свойством content псевдоэлементов ::before и ::after, обычно используется для добавления чисто косметического контента.

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

https://developer.mozilla.org/en-US/docs/Web/CSS/Pseudo-elements

person Michael Benjamin    schedule 05.04.2017
comment
Это, и если вы сканируете сторонний сайт, который использует сгенерированный контент для такого рода вещей, что ж, очень плохо для вас. - person BoltClock; 05.04.2017
comment
О, я вижу этому применение. Если содержимое дерева DOM на самом деле яблоко (например, для идентификаторов с картинками или чем-то еще, яблоко, груша и т. д.), и вы хотите украсить их соответствующим артиклем. Вроде того. Но, конечно, в этих случаях нет необходимости очищать добавленные слова. - person Mr Lister; 05.04.2017
comment
@BoltClock указывает на проблему: мне нужно просканировать сторонний веб-сайт. И это, использование псевдоэлементов для отображения нормального контента, является технологией защиты от сканирования. - person Sraw; 05.04.2017
comment
@Mr Lister: По сути, если контент важен, его не следует генерировать. - person BoltClock; 05.04.2017