Вопрос

Противоположное может быть достигнуто с использованием Pyparding следующим образом:

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 («Таблица») натюдиню = TableOpen + Skipto (скатерть) + скатерть F = заправить сзади (потушкообразный) табл-тет. Cotelswarteaince (f) data = (распределительный). Печать данных

И я получаю что-то подобное ...

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:

Спасибо Марэлли. Что мне нужно:

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
Это было полезно?

Решение

Вы могли бы сначала извлечь таблицу (аналогично, как теперь вы извлекаете сценарий, но без удаления курса ;-), получение thetable нить; Затем вы извлекаете скрипт, replaceWith(thetable) вместо replaceWith(''). Отказ В качестве альтернативы вы можете подготовить более сложный разбирающий разбор, но простой двухфазный подход выглядит более простым для меня. Например (для сохранения конкретно содержание принадлежащий table, не table теги):

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]

removeText = replaceWith(thetable)
scriptOpen, scriptClose = makeHTMLTags("script")
scriptBody = scriptOpen + SkipTo(scriptClose) + scriptClose
scriptBody.setParseAction(removeText)
data = (scriptBody).transformString(data)

print data

Это отпечатки beforebuhafter (Что снаружи тега скрипта, с содержимым тега таблицы, зажатой внутри), надеюсь, «по желанию».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top