





Как насчет синтаксического анализа данных HTML и извлечения данных с помощью парсера?
Я бы попробовал что-то вроде автора описанного в глава 8.3 книги Dive Into Python
Хотя я согласен с Лукасом в том, что регулярные выражения не так уж и страшны, я все же считаю, что вам следует использовать специализированный анализатор HTML. Это связано с тем, что стандарт HTML достаточно сложен (особенно если вы хотите произвольно анализировать HTML-страницы, взятые из Интернета), и вам придется написать много кода для обработки угловых случаев. Похоже, что python включает в себя один из коробки.
Вы также должны проверить привязки python для TidyLib, который может очистить поврежденный HTML, что значительно повысит вероятность успеха любого синтаксического анализа HTML.
Вам может понадобиться что-то более сложное, чем регулярное выражение. Веб-страницы часто имеют угловые скобки, которые не являются частью тега, например:
<div>5 < 7</div>
Удаление тегов с помощью регулярного выражения вернет строку "5" и обработает
< 7</div>
как один тег и удалите его.
Предлагаю поискать уже написанный код, который сделает это за вас. Я поискал и нашел это: http://zesty.ca/python/scrape.html Он также может разрешать объекты HTML.
Используйте BeautifulSoup! Он идеально подходит для тех случаев, когда у вас есть входящая разметка сомнительного достоинства, и вам нужно извлечь из нее что-то разумное. Просто передайте исходный текст, извлеките все строковые теги и присоединитесь к ним.
и код для этого будет: '' .join (BeautifulSoup (value, convertEntities = BeautifulSoup.HTML_ENTITIES) .findAll (text = Tr ue))
Регулярные выражения не страшны, но написание собственных регулярных выражений для удаления HTML - верный путь к безумию (и это тоже не сработает). Следуйте по пути мудрости и используйте одну из многих хороших библиотек для анализа HTML.
Пример Лукаса также неверен, потому что «sub» не является методом строки Python. Вам нужно будет «импортировать re», а затем вызвать re.sub (pattern, repl, string). Но это ни здесь, ни там, поскольку правильный ответ на ваш вопрос не требует написания регулярных выражений.
Глядя на количество смысла, которое люди демонстрируют в других ответах здесь, я бы сказал, что использование регулярного выражения, вероятно, не лучшая идея для вашей ситуации. Пойдите для чего-то испытанного и протестированного, и относитесь к моему предыдущему ответу как к демонстрации того, что регулярные выражения не должны быть пугающими который.
если вы используете django, вы также можете использовать http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags ;)
На самом деле ссылка на Dive Into Python должна быть это