У меня есть пара сотен файлов HTML исходного кода. Мне нужно извлечь содержимое определенного <div>
элемента из каждого из этих файлов, поэтому я собираюсь написать скрипт для циклического прохождения каждого файла. Структура элемента выглядит следующим образом:
<div id='the_div_id'>
<div id='some_other_div'>
<h3>Some content</h3>
</div>
</div>
Может кто-нибудь предложить метод, с помощью которого я могу извлечь div the_div_id
и все дочерние элементы и контент из файла с помощью командной строки Linux?
источник
hxselect
более требователен к формату ввода, чемpup
. Например, я получаюInput is not well-formed. (Maybe try normalize?)
с,hxselect
гдеpup
просто анализирую это.Попробуйте
pup
, инструмент командной строки для обработки HTML. Например:источник
Вот непроверенный Perl-скрипт, который извлекает
<div id="the_div_id">
элементы и их содержимое с помощьюHTML::TreeBuilder
.Если у вас аллергия на Perl, у Python есть
HTMLParser
.PS Не пытайтесь использовать регулярные выражения. ,
источник
Вот Ex one-liner для извлечения этой части из каждого файла:
Чтобы сохранить / заменить на месте, перейдите
-cqa!
в-cxa
%p
раздел и удалите его . Для рекурсивности рассмотрите использование globbing (**/*.html
).Это в основном для каждого буфера / файла (
bufdo
), он выполняет следующие действия:/pattern
- найти образецnorm
- начать симулировать нормальные нажатия клавиш Vin
- перейти к следующему шаблону (требуется в режиме Ex)vatd
- удалить выбранный раздел внешнего тега (см. переход между HTML-тегами )ggdG
- удалить весь буфер (эквивалентно:%d
)"2p
- повторно вставьте ранее удаленный текстМожет быть, не очень эффективный и не POSIX (
:bufdo
), но он должен работать.источник