понедельник, 21 сентября 2015 г.

Python: как извлечь содержимое html-тега

В этом уроке мы посмотрим, как в Python можно извлечь содержимое тега html-страницы.

Сделаем мы это при помощи регулярого выражения с использованием метода re.findall:
import re
html = '''
<html>
  <head>
    <title>Page</title>
  </head>
  <body>
    <h1>Hello</h1>
    <p>Nice to see you!</p>
  </body>
</html>
'''

re.findall(r'<body.*?>(.*)</body>', text, re.DOTALL)
# Результат: ['\n<h1>Hello</h1>\n<p>Nice to see you!</p>\n']

Флаг re.DOTALL говорит Python-у, что под символом "." в регулярном выражении нужно подразумевать любой символ, включая перенос строки. Без этого флага Python будет считать, что под символом "." подразумевается все, кроме переноса строки.