wgetを使用してダウンロードしたファイルを関数に渡します。

wgetを使用してダウンロードしたファイルを関数に渡します。

私はwgetを使用して複数の画像をダウンロードしていますが、空白の場合はファイルをrmするためにファイルを渡す機能を使用したいと思います。私の質問は、画像を次の機能に転送する方法です。

rmEmpty ()
{
    if ! [ -s "$1" ]
    then
        rm "$1";
    fi
}

私が画像をダウンロードする方法は次のとおりです。

wget -q -O- http://www.mtgsalvation.com/forums/creativity/artwork/340782-official-digital-rendering-thread?page=$i | 
sed -n '{/forum-post-body-content/,/p-comment-notes/p}' |
grep -Po 'src="\K[^"]+' | xargs wget -q -T 6 -t 1

だから可能でxargs wget | rmEmpty()あれば結局似たようなものが欲しいです。

ベストアンサー1

適切なHTMLパーサーを使用してください。:

#!/usr/bin/env perl
use strict; use warnings;
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;

my $m = WWW::Mechanize->new( autocheck => 1 );
$m->get("http://www.mtgsalvation.com/forums/creativity/artwork/340782-official-digital-rendering-thread?page=1");
my $tree = HTML::TreeBuilder::XPath->new_from_content( $m->content );
my @imgs = $tree->findvalues( '//div[@class="j-comment-body-container p-comment-body forum-post-body-content"]//img/@src' );
`wget -i - -q -T 6 -t 1 @imgs; find . -maxdepth 1 -empty -type f -delete`;

おすすめ記事