Я хотел бы знать, как правильно проанализировать блок содержимого с помощью Nokogiri:
У меня есть несколько документов для анализа, где они изначально содержали формат, в котором каждый основной контейнер был <p>
. Основные фрагменты информации в каждом из них, как ни странно, разделены тегами <font>
.
Фактически стандартный образец содержимого <p>
содержит следующее и является типичным примером (некоторые имеют намного больше контента, некоторые намного меньше):
<p>
<font size="5" face="Arial, Helvetica, sans-serif" color="#00CCAA" class="">
<font color="#AAFF33" class="">
October 10, 1990 - Maybe a Title
</font>-
<font size="4" class="">
Some long text here.
<font color="#66CC00" class="">
<a href="SourceTitle/date.pdf">[Blah Blah, October 27, 1982 p. 2</a>
]
</font>.
More content.
<font color="#00FF33" class="">[Another Source, 1971, issue 01/4]
</font>.
</font>
<font size="5" face="Arial, Helvetica, sans-serif" color="#00CCAA" class="">
<font color="#AAFF33" class=""><font size="4" color="#00CCAA" class="">
Another fantastic article.
<a href="SourceTitle/Date.pdf">[Some Source, October 4, p.6]</a>
</font>
</font>
</font>
</font>
</p>
По сути, атрибут «размер шрифта» - это то, что отличает каждый компонент в статье. Основными моментами, которые необходимо извлечь, являются теги FIRST <font size ="5"...
(то есть дата статьи и главный заголовок, если заголовок указан), а затем фактический контент.
В настоящее время у меня есть все фрагменты абзаца с: doc.xpath('//p').each do |node|
Однако я не уверен, должен ли я снова пропустить его через Нокогири, чтобы разобрать его содержимое, или мне просто нужно пропустить все через регулярное выражение. Я надеялся на небольшой пример того, как сделать это "должным образом", я полагаю, используя встроенное обнаружение xpath в начальном блоке, который вытягивает элементы. Я предполагаю, что есть способ вытащить подкомпоненты, основанные на разграничении размера шрифта, но я просто еще не видел конкретного примера этого.