Perl脚本用于打开文件,获取URL并进行HTML清理

时间:2012-05-16 22:27:03

标签: html perl

我是Perl的新手,也是编程方面的新手。我在这里遇到一些实际问题。我需要一个Perl脚本,可以打开文本文件,读取一系列URL,获取页面内容,进行HTML清理,并将内容保存到另一个文件。

非常感谢任何指导。

3 个答案:

答案 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模块阅读每个网址
  • 进行HTML清理
  • 使用openprint写入文件

答案 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;