Как извлечь тег из HTML-кода, который находится в комментариях?

Можно ли при помощи Beautiful Soup получить комментарий из элемента <div> с классом "detail-product-buy__declaration-data delivery"?
  • 9 января 2024 г. 12:19
Ответы на вопрос 2
Чтобы извлечь комментарий из HTML-кода с использованием библиотеки Beautiful Soup в Python, можно воспользоваться следующим подходом:

1. Найти элемент `<div>` с соответствующим классом `detail-product-buy__declaration-data delivery`.
2. Перебрать все комментарии внутри этого элемента.
3. Обработать найденные комментарии и извлечь нужные данные.

Вот пример кода, который делает это:

```python
from bs4 import BeautifulSoup, Comment

# предполагается, что `html_content` содержит ваш HTML-код
html_content = """
<div class="detail-product-buy__declaration-data delivery">
    <!-- Комментарий с тегом: <span class="hidden-tag">Скрытый текст</span> -->
</div>
"""

soup = BeautifulSoup(html_content, 'html.parser')

# Находим <div> по классу
div_element = soup.find('div', class_='detail-product-buy__declaration-data delivery')

if div_element:
    # Ищем комментарии внутри <div>
    comments = div_element.find_all(string=lambda text: isinstance(text, Comment))
    for comment in comments:
        print(f"Найден комментарий: {comment}")
        
        # Создаем новый суп из комментария, чтобы разобрать его как HTML
        comment_soup = BeautifulSoup(comment, 'html.parser')
        
        # Теперь мы можем найти теги внутри комментария, используя обычные методы BeautifulSoup
        # Например, если вы хотите найти все <span> теги в комментарии
        hidden_tags = comment_soup.find_all('span')
        for tag in hidden_tags:
            print(f"Найден скрытый тег: {tag}, с содержимым: {tag.text}")
```

Этот код напечатает содержимое комментариев, а также найдет скрытые теги в комментариях и их содержимое.

Обратите внимание, что после получения комментария нам нужно превратить его в объект `BeautifulSoup`, потому что изначально комментарий — это просто строка, и мы не можем применить к ней методы поиска тегов `BeautifulSoup`.

Таким образом, вы можете получить и проанализировать содержимое HTML-комментариев. Но помните, что комментарии обычно используются для заметок и не предназначены для хранения структурированных данных, поэтому этот метод следует использовать с осторожностью.
суть вопроса это вообще реально сделать силами BS?

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