私は Perl と一般的にプログラミングの初心者です。私はここでいくつかの本当の問題に直面しています。テキスト ファイルを開き、一連の URL を読み取り、ページのコンテンツを取得し、HTML をクリーニングし、コンテンツを別のファイルに保存できる Perl スクリプトが必要です。
ご指導ありがとうございました。
次の実際の例を参照してください。これを行う簡単な方法は次のとおりです。
読み込むファイル:
$ cat /tmp/list.txt
http://stackoverflow.com/questions/10627644/perl-script-to-open-file-get-url-and-make-html-cleaning
http://google.com
Perl コード、基本的な LWP::UserAgent "browser" を使用します
#!/usr/bin/env perl
use strict;
use warnings;
require LWP::UserAgent;
open FH, "<", "/tmp/list.txt";
my $ua = LWP::UserAgent->new;
$ua->timeout(10);
foreach my $line (<FH>) {
my $response = $ua->get($line);
if ($response->is_success) {
# you need another file handle here to write to a new file
print $response->decoded_content;
}
else {
die $response->status_line;
}
}
close FH;
これは良いベースです。すべてのニーズを完了するには、もう少し作業が必要です: - 別のファイルハンドルを使用して新しいファイルを書き込む - HTML をクリーンアップする
編集:「クリーニング」についてはよくわかりません:ページを HTML なしでテキストとしてダンプしますか? はいの場合は、次のことを考慮してください。
#!/usr/bin/env perl
use strict;
use warnings;
while (<>) {
`links -dump "$_" > "$1" `if m!https?://([^/]+)!;
}
次に、シェルで次のようにスクリプトを呼び出すことができます。
$ perl script.pl < /path/to/URLs.list
This is an example of how it could be done, including html cleanup and file saving
#!/usr/bin/perl
use LWP::Simple;
use HTML::Clean;
open FILE, "</path/to/file/urls.txt" or die $!;
while(<FILE>){
chomp $_;$url=$_;
my $content=get($url);
my $h = new HTML::Clean(\$content);
$h->compat();
$h->strip();
my $data = $h->data();
$url=~s/(http:\/\/)(.+\..+)(\/*)/$2/g;
open NF, ">>/path/to/file/$url.html";
binmode(NF, ":utf8");
print NF $$data;
close NF;
}
close FILE;
This will save 'http://url.com/something' as 'url.com.html'
このようになります
open
テキストファイルを開くために使用しますwhile (<$fh>) { ... }
そこから読み取るために使用しますchomp
改行を削除する各行LWP
モジュールを使用して各 URL を読み取りますopen
とを使用print
してファイルに書き込みます