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

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как извлечь все содержимое тега
определенного имени класса из HTML, используя регулярные выражения в Python?

Сообщение Anonymous »

Я пишу сканер на Python, который должен извлекать содержимое всех тегов с определенным именем класса (например, «имя-класса») из HTML-документа. Я узнал, что регулярные выражения обычно не являются лучшим инструментом для анализа HTML, поскольку они могут дать сбой из-за сложности и вложенной структуры HTML. Однако в данном конкретном случае структура HTML относительно проста и предсказуема, поэтому я хотел бы попробовать использовать для этой задачи регулярные выражения. Я попробовал следующий код, но, похоже, он не работает должным образом:
Мой вопрос:
Правильно ли мое регулярное выражение? Если возникла ошибка, как ее следует изменить, чтобы гарантировать, что она захватывает только содержимое тегов с именем класса «имя класса»?
Если регулярные выражения действительно не Как лучше всего справиться с этой ситуацией, можете ли вы порекомендовать более подходящую библиотеку Python (например, BeautifulSoup) для решения этой проблемы и предоставить краткий пример кода?
  • Флаг re.DOTALL используется для того, чтобы символ . соответствовал любому символу, включая символы новой строки.
  • Флаг re.IGNORECASE не является обязательным, но может быть полезен, если вы не уверены в чувствительности к регистру имени класса.
  • Это регулярное выражение предполагает, что внутри целевых тегов нет вложенных тегов с одинаковым именем класса. Вложенные теги могут нарушить это регулярное выражение.
  • Атрибуты HTML могут располагаться в любом порядке. Могут присутствовать дополнительные атрибуты или пробелы, которые могут сделать регулярное выражение решения хрупкие.
  • Код: Выделить всё

        import re
    
    html_content = """
    
    
    Don't want this content
    Need this content
    Also need this content
    
    
    """
    
    pattern = r'(.*?)'
    matches = re.findall(pattern, html_content, re.DOTALL)
    
    for match in matches:
    print(match.strip())
    
    


Подробнее здесь: https://stackoverflow.com/questions/790 ... ml-using-r
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»