Как найти тег комментария с помощью BeautifulSoup?

Я пробовал soup.find (‘! -‘), но он не работает. Заранее спасибо.

Изменить: Спасибо за подсказку о том, как найти все комментарии. У меня есть следующий вопрос. Как конкретно искать комментарий?

Например, у меня есть следующий тег комментария:

<!-- Wednesday 110518(05:00PM)
-->

Я действительно просто хочу этот материал Wednesday 110518 . «110518» – это дата YYMMDD, на которую я склонен использовать мою цель поиска. Однако я не знаю, как найти что-то в пределах определенного тега комментария.

Pyparsing позволяет вам искать комментарии HTML с помощью встроенного выражения htmlComment и присоединять обратные вызовы parsingа времени для проверки и извлечения различных полей данных в комментарии:

 from pyparsing import makeHTMLTags, oneOf, withAttribute, Word, nums, Group, htmlComment import calendar # have pyparsing define tag start/end expressions for the # tags we want to look for inside the comments span,spanEnd = makeHTMLTags("span") i,iEnd = makeHTMLTags("i") # only want spans with class=titlefont span.addParseAction(withAttribute(**{'class':'titlefont'})) # define what specifically we are looking for in this comment weekdayname = oneOf(list(calendar.day_name)) integer = Word(nums) dateExpr = Group(weekdayname("day") + integer("daynum")) commentBody = ' don't want the next one, wrong span class  not even a span tag!  another matching comment, on a different day  """ for comment in htmlComment.searchString(htmlsource): parsedDate = comment.date # date info can be accessed like elements in a list print parsedDate[0], parsedDate[1] # because we named the expressions within the dateExpr Group # we can also get at them by name (this is much more robust, and # easier to maintain/update later) print parsedDate.day print parsedDate.daynum print 

Печать:

 Wednesday 110518 Wednesday 110518 Thursday 110521 Thursday 110521 

Вы можете найти все комментарии в документе с помощью метода findAll . См. Этот пример, показывающий, как делать то, что вы пытаетесь сделать. Удаление элементов :

Вкратце, вы хотите:

 comments = soup.findAll(text=lambda text:isinstance(text, Comment)) 

Изменить: если вы пытаетесь выполнить поиск в столбцах, вы можете попробовать:

 import re comments = soup.findAll(text=lambda text:isinstance(text, Comment)) for comment in comments: e = re.match(r'([^< ]*)', comment.string).group(1) print e