Я пишу скрипт для изменения содержимого html, и я застрял в двух проблемах. У меня есть эта структура html, которая является названиями фильмов и годами выпуска с эскизами, сгруппированными в 5 столбцов. Я хочу генерировать новые html-файлы с фильмами, сгруппированными по годам с 2011 по 1911 год, например. представить-2011; 2010-2001; 2000-1991; и т.д.Как переставить html-контент с помощью HTML :: Treebuilder
<table>
<tr>
<td class="basic" valign="top">
<a href="details/267226.html" title="" id="thumbimage">
<img src="images/267226f.jpg"/>
</a>
<br/>Cowboys & Aliens  (2011)
</td>
<td class="basic" valign="top">
<a href="details/267185.html" title="" id="thumbimage">
<img src="images/267185f.jpg"/>
</a>
<br/>The Hangover Part II  (2011)
</td>
<td class="basic" valign="top">
<a href="details/267138.html" title="" id="thumbimage">
<img src="images/267138f.jpg"/>
</a>
<br/>Friends With Benefits  (2011)
</td>
<td class="basic" valign="top">
<a href="details/266870.html" title="" id="thumbimage">
<img src="images/266870f.jpg"/>
</a>
<br/>Beauty And The Beast  (1991)
</td>
<td class="basic" valign="top">
<a href="details/266846.html" title="" id="thumbimage">
<img src="images/266846f.jpg"/>
</a>
<br/>The Fox And The Hound  (1981)
</td>
</tr>
......
</table>
Одна проблемы, я понятия не имею, как решить, что после удаления фильмов не соответствующих декады я остался с пустыми «» т.р. тегами и позицией эскизов и не знаю, как снова изменить каждая строка из 5 столбцов заполнена 5 заголовками. А также, как обрабатывать каждое десятилетие с помощью одного вызова скрипта. Благодарю.
use autodie;
use strict;
use warnings;
use File::Slurp;
use HTML::TreeBuilder;
my $tree = HTML::TreeBuilder->new_from_file('test.html');
for my $h ($tree->look_down(class => 'basic')) {
edit_links($h);
my ($year) = ($h->as_text =~ /.*?\((\d+)\).*/);
if ($year > 2010 or $year < 2001) {
$h->detach;
write_file("decades/2010-2001.html", \$tree->as_HTML('<>&',' ',{}), "\n");
}
}
sub edit_links {
my $h = shift;
for my $link ($h->find_by_tag_name('a')) {
my $href = '../'.$link->attr('href');
$link->attr('href', $href);
}
for my $link ($h->find_by_tag_name('img')) {
my $src = '../'.$link->attr('src');
$link->attr('src', $src);
}
}
Это решение наиболее решительно из моей лиги. Я не могу вас поблагодарить. Отлично! – thebourneid