Извлечение шаблона в python / php - PullRequest
3 голосов
/ 28 января 2010

Существуют ли библиотеки извлечения шаблонов на python или php? В Perl есть Template :: Extract , но я не смог найти похожую реализацию ни в python, ни в php.

Единственное, что я могу найти в Python, это TemplateMaker (http://code.google.com/p/templatemaker/),, но на самом деле это не библиотека извлечения шаблонов.

Ответы [ 3 ]

2 голосов
/ 09 марта 2010

Поработав еще немного, я нашел решение именно для того, что искал. В этом сообщении filippo опубликовал список решений Python для очистки экрана: Параметры для очистки HTML? , среди которых пакет под названием scrapemark (http://arshaw.com/scrapemark/).

Надеюсь, это поможет любому, кто ищет такое же решение.

1 голос
/ 28 января 2010

TmeplateMaker, кажется, делает то, что вам нужно, по крайней мере, в соответствии с документацией. Вместо того, чтобы получать шаблон в качестве входных данных, он выводит («учится»), если из нескольких документов. Затем у него есть метод extract для извлечения данных из других документов, созданных с помощью этого шаблона.

Пример показывает:

# Now that we have a template, let's extract some data.
>>> t.extract('<b>red and green</b>')
('red', 'green')
>>> t.extract('<b>django and stephane</b>')
('django', 'stephane')

# The extract() method is very literal. It doesn't magically trim
# whitespace, nor does it have any knowledge of markup languages such as
# HTML.
>>> t.extract('<b>  spacy  and <u>underlined</u></b>')
('  spacy ', '<u>underlined</u>')

# The extract() method will raise the NoMatch exception if the data
# doesn't match the template. In this example, the data doesn't have the
# leading and trailing "<b>" tags.
>>> t.extract('this and that')
Traceback (most recent call last):
...

Итак, чтобы выполнить поставленную задачу, я думаю, вам следует:

  • Дайте ему несколько документов, отрисованных по вашему шаблону - у него не будет проблем с выводом шаблона из них.
  • Используйте выведенный шаблон для извлечения данных из новых документов.

Если подумать, это даже более полезно, чем Perl Template::Extract, так как он не ожидает, что вы предоставите ему чистый шаблон - он изучает его самостоятельно из образца текста.

0 голосов
/ 28 января 2010

Вот интересная дискуссия от Адриана, автора TemplateMaker http://www.holovaty.com/writing/templatemaker/

Это похоже на то, что я бы назвал библиотекой индукции оболочки.

Если вы ищете что-то более настраиваемое (меньше для очистки), взгляните на lxml.html и BeautifulSoup, также для python.

...