我是Perl的新手,也是编程方面的新手。我在这里遇到一些实际问题。我需要一个Perl脚本,可以打开文本文件,读取一系列URL,获取页面内容,进行HTML清理,并将内容保存到另一个文件。
非常感谢任何指导。
答案 0 :(得分:1)
请参阅以下实际示例,一种简单的方法是:
要阅读的文件:
$ 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“浏览器”
#!/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?://([^/]+)!;
}
然后,在shell中,您可以像这样调用脚本:
$ perl script.pl < /path/to/URLs.list
答案 1 :(得分:0)
就像这样
open
打开文本文件while (<$fh>) { ... }
从中读取chomp
每行删除换行符LWP
模块阅读每个网址open
和print
写入文件答案 2 :(得分:0)
这是一个如何完成它的例子,包括html清理和文件保存
#!/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;
这将保存&#39; http://url.com/something' as&#39; url.com.html&#39;