Как заменить разметку в html файлах, хранящихся на серверах unix / solaris? - PullRequest
0 голосов
/ 27 октября 2009

Я ищу способ получить часть разметки, которая содержится в 1000+ html-файлах, опубликованных на серверах Unix (работающих через apache), и заменить разметку либо пустыми узлами, либо альтернативной разметкой html.

например:

Найти

<div id="someComponent"> .....{a bunch of interior markup} .... </div>

Заменить на {пусто}

ex 2:

Найти </div></body>

Заменить </div>{some HTML markup needed here}</body>

Ответы [ 3 ]

1 голос
/ 27 октября 2009

Если это действительно просто (разбор не требуется, разметка общеизвестна, а не одна в другую), самый быстрый способ должен быть:

(в Zsh или Bash)

perl -pi -e 's#<div class="toto">.*?</div>#<span>new content</span>#g' /path/to/files/**/*.html(.)

Это должно сделать трюк, чтобы заменить все между всеми ...<div class="toto">.....</div>... на ...<span>newcontent</span>...

Но будьте осторожны, он НЕ будет работать для ...<div class="toto"> ... <div class="toto"> ... </div> ... </div> ....

1 голос
/ 27 октября 2009

Один из способов сделать это: использовать Python с BeautifulSoup для анализа HTML-файла, выполнения замены и обратной записи.

0 голосов
/ 27 октября 2009

Если разметка написана одинаково во всех файлах, sed или perl будет намного быстрее, чем BeautifulSoup или тому подобное, но также сложнее сделать гибкую с точки зрения различных способов выражения того же самого HTML-разметка в текстовом виде.

У вас есть более конкретный пример того, какую разметку вы ищете, и в идеале, как она может варьироваться от файла к файлу? Где в файле это будет? Кроме того, можно ли при необходимости оптимизировать или привести в порядок HTML-код?

О, а вы что-то запускаете на сервере (ах), или вам нужен код для паука на сервере, чтобы получить файлы HTML для обработки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...