-1

我是 Perl 新手,通常是编程新手。我在这里面临一些真正的问题。我需要一个可以打开文本文件、读取一系列 URL、获取页面内容、进行 HTML 清理以及将内容保存到另一个文件的 Perl 脚本。

非常感谢您的任何指导。

4

3 回答 3

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
于 2012-05-17T00:30:36.957 回答
0

会这样

  • 用于open打开文本文件
  • 用于while (<$fh>) { ... }从中读取
  • chomp每行删除换行符
  • 使用LWP模块读取每个 URL
  • 进行 HTML 清洗
  • 使用openprint写入文件
于 2012-05-17T00:23:30.203 回答
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;

这会将“http://url.com/something”保存为“url.com.html”

于 2012-05-17T00:50:58.240 回答