Противоположное может быть достигнуто с помощью Pyparsing следующим образом:Strip текст, кроме как от содержимого тега
from pyparsing import Suppress, replaceWith, makeHTMLTags, SkipTo
#...
removeText = replaceWith("")
scriptOpen, scriptClose = makeHTMLTags("script")
scriptBody = scriptOpen + SkipTo(scriptClose) + scriptClose
scriptBody.setParseAction(removeText)
data = (scriptBody).transformString(data)
Как я мог сохранить содержимое тега "table"
?
ОБНОВЛЕНИЕ 0:
Я пробовал: # держать только таблицы tableOpen, tableClose = makeHTMLTags ("таблица") tableBody = tableOpen + SkipTo (tableClose) + tableClose е = ReplaceWith (tableBody) tableBody.setParseAction (е) данные = (tableBody) .transformString (данные) данные печати
и я получаю что-то вроде этого ...
garbages
<input type="hidden" name="cassstx" value="en_US:frontend"></form></td></tr></table></span></td></tr></table>
{<"table"> SkipTo:(</"table">) </"table">}
<div id="asbnav" style="padding-bottom: 10px;">{<"table"> SkipTo:(</"table">) </"table">}
</div>
even more garbages
ОБНОВЛЕНИЕ 2:
Спасибо Martelli. Что мне нужно:
from pyparsing import Suppress, replaceWith, makeHTMLTags, SkipTo
#...
data = 'before<script>ciao<table>buh</table>bye</script>after'
tableOpen, tableClose = makeHTMLTags("table")
tableBody = tableOpen + SkipTo(tableClose) + tableClose
thetable = (tableBody).searchString(data)[0][2]
print thetable
Проблема в том, что я не знаю, как получить строку 'tabletable'. –
@myle, см. Мое редактирование с примером. Да, 'pyparsing' docs действительно скудны (если, возможно, вы не готовы заплатить за книгу O'Reilly, я думаю) - только серьезный дефект этого опрятного пакета! –