Python: необходимо извлечь содержимое тега из HTML-страницы с помощью регулярных выражений, но не BeautifulSoup - PullRequest
0 голосов
/ 28 апреля 2011

У меня есть требование, при котором я должен извлечь содержимое внутри тега <raw>. Например, мне нужно извлечь abcd и efgh из этого фрагмента HTML:
<html><body><raw somestuff>abcd</raw><raw somesuff>efgh</raw></body></html>

Я использовал этот код в своем питоне
re.match(r'.*raw.*(.*)/raw.*', DATA)

Но это не возвращает никакой подстроки. Я не очень хорош в регулярных выражениях. Так что исправление этого или нового решения мне очень поможет. Я не должен использовать внешние библиотеки (из-за некоторых ограничений в моей компании).

Ответы [ 2 ]

6 голосов
/ 28 апреля 2011

Ваша компания действительно должна пересмотреть свою политику.Переписать анализатор XML - это пустая трата времени, для Python их уже несколько.Некоторые из них включены в stdlib, поэтому, если вы можете import re, вам также следует разрешить import xml.etree.ElementTree или что-либо еще, перечисленное в http://docs.python.org/library/markup.html.

Вы действительно должны использовать один из них.Нет смысла дублировать всю эту работу.

0 голосов
/ 28 апреля 2011

Использование не жадного сопоставления (*?) Может сделать это легко, по крайней мере, для вашего примера.

re.findall(r'<raw[^>]*?>(.*?)</raw>', DATA)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...