Форум сайта python.su
Хочу распарсить HTML-документ, найти нужные теги. Например, найти все теги <h2>…</h2>. При этом “h” может быть и заглавной, а там, где многоточие, могут попадаться и переводы строк. Кроме того, если попадётся <h2>…</h2>…<h2>…</h2>, мне нужно, чтобы это было два совпадения, а не одно. Почитав доку, написал чушь, которая не работает:
(?s|i)<h2>.*(?!(</h2>))</h2>Вначале пытаюсь сказать, что точка должна схватывать и переводы строк (s), плюс всё делается независимо от регистра (i). После этого пытаюсь сказать, что мне нужно всё, что угодно, что находится между “<h2>” и “</h2>”, но в этом “между” не должно попадаться самого “</h2>” (чтобы получить действительно все заголовки H2, а не отрезок документа между первым и последним таким заголовком).
Офлайн
Кажись, так работает:
(?si)<h2>(.*?)</h2>
Офлайн
А чем тебе XPath не подходит?
Отредактировано (Апрель 10, 2007 10:00:00)
Офлайн
А что это и какая связь с регулярными выражениями?
Офлайн
Все ники занятыXSLT - манипулирование XML
А что это и какая связь с регулярными выражениями?
Офлайн
Спасибо, но имхо, сложнее будет.
Офлайн
А че сложного?
Зато унифицированное решение.
Офлайн
denzТак, к слову. С год назад, примерно, я пробовал использовать beautifulsoup и в некоторых случаях (примерно 30% реального корявого HTML'а взятого с живых сайтов) beautifulsoup не справлялся с обработкой. Т.е. после beautifulsoup какие-то части содержания и размерки терялись.
ХТМЛ должен быт валидным XML. Для этого можно использовать beautifulsoup.prettify().
Офлайн
OlDerbeautifulsoup - по идее и не нужен.
beautifulsoup не справлялся с обработкой.
HTML parsing is similarly simple. The parsers have a ``recover`` keywordЗ.Ы. Будет время - протестю.
argument that the HTMLParser sets by default. It lets libxml2 try its best to
return something usable without raising an exception. Note that this
functionality depends entirely on libxml2. You should use libxml2 version
2.6.21 or newer to take advantage of this feature.
Офлайн
регулярними виразами то певно не получиться. Пробував HTMLParser дуже гарно парсить і дуже просто користуватись.
Офлайн