#javascript #html #css #web-scraping
#javascript #HTML #css #очистка веб-страниц
Вопрос:
Я хочу использовать селектор css для выбора только текста (который в моем примере «1.42») из этого div <div class="one">
для целей очистки:
<div class="one">
1.42
<div class="nested">..</div>
</div>
Я попробовал это, но вернул все <div class="one">
(и я хочу только текст):
div.one:first-child
и это также:
div.one:first-child:not(.nested)
Все они возвращают текст плюс содержимое внутри div.nested
Редактировать:
Я хочу использовать селектор для очистки определенного текста с помощью Beautifulsoup
soup.select_one('div.one:first-child:not(.nested)')
Комментарии:
1. что вы хотите сделать с этим текстом? скрыть это?
2. не используйте его с Beautifulsoup для очистки
3. Я вижу, что в моем ответе ниже не учитывается, что вы, вероятно, не можете редактировать внешний html-файл, поэтому, если бы вы могли уточнить, какой результат дает ваш тест soup.select_one, было бы полезно. Редактировать: вы уже написали, что это такое, извините за это. Боюсь, я не смогу тогда помочь. Возможно ли в Beautifulsoup удалить весь внутренний div.nested из результата с помощью функции?
Ответ №1:
Вы не можете css-выбрать что-то, чего нет внутри html-тега, с классом css или без него. В вашем случае вы должны обернуть свой текст 1.42 в HTML-тег, например <p>
.
Это также лучшая практика, никогда не печатать текст непосредственно внутри div, без семантического текстового тега, такого как p .
Как только у вас будет свой, <p class="...">Text here</p>
вы можете выбрать div:first-child или просто выбрать p или p.theclassname
. Другой метод div:nth-child(1)
.