Как я могу удалить теги комментариев из HTML, используя BeautifulSoup?

В Angular s - директивы . Таким образом, если у вас есть пустой href или нет href, Angular вызовет event.preventDefault.

Из источника :

    element.on('click', function(event){
      // if we have no href url, then don't navigate anywhere.
      if (!element.attr(href)) {
        event.preventDefault();
      }
    });

Вот plnkr , демонстрирующий отсутствующий сценарий href.

13
задан Nathan 17 August 2010 в 22:43
поделиться

2 ответа

Я все еще пытаюсь понять, почему это не находит и не удаляет такие теги: . Эти обратные косые черты вызывают определенные теги, которые следует игнорировать.

Это может быть проблема с базовым парсером SGML: см. http://www.crummy.com/software/BeautifulSoup/documentation.html#Sanitizing%20Bad%20Data%20with%20Regexps . Вы можете переопределить его, используя регулярное выражение markupMassage - прямо из документации:

import re, copy

myMassage = [(re.compile('<!-([^-])'), lambda match: '<!--' + match.group(1))]
myNewMassage = copy.copy(BeautifulSoup.MARKUP_MASSAGE)
myNewMassage.extend(myMassage)

BeautifulSoup(badString, markupMassage=myNewMassage)
# Foo<!--This comment is malformed.-->Bar<br />Baz
3
ответ дан 1 December 2019 в 17:20
поделиться

Прямо из документации к BeautifulSoup, вы можете легко удалить комментарии (или что угодно), используя extract():

from BeautifulSoup import BeautifulSoup, Comment
soup = BeautifulSoup("""1<!--The loneliest number-->
                        <a>2<!--Can be as bad as one--><b>3""")
comments = soup.findAll(text=lambda text:isinstance(text, Comment))
[comment.extract() for comment in comments]
print soup
# 1
# <a>2<b>3</b></a>
59
ответ дан 1 December 2019 в 17:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: