我对 Perl 比较陌生。我有一个 URL 列表,我只想从中提取文本并将其打印在不同的文件中。这是我的代码示例:
#!/usr/bin/perl -w
use strict;
use locale;
use warnings;
#use diagnostics;
use utf8;
binmode(STDIN, "encoding(utf8)");
binmode(STDOUT, "encoding(utf8)");
binmode(STDERR, "encoding(utf8)");
use LWP::Simple;
use HTML::Parse;
open (CLEANURL, '<:utf8', "clean_keyword_url_5.3.txt") || die ("Cannot open File\n");
open(STORECODE, '>:utf8', "Bstored_keyword_url_5.3.txt") || die ("Cannot open File\n");
my $url2parse;
my @arg = <CLEANURL>;
close (CLEANURL);
foreach my $arg(@arg) {
$url2parse = parse_html(get($arg))->format;
print STORECODE $url2parse;
}
close (STORECODE);
在clean_keyword_url_5.3.txt
我有如下链接:
http://www.ladepeche.fr/article/2013/01/31/1548850-aulon-l-activite-est-paralysee.html#xtor=RSS-6
http://tdg.ch/monde/faits-divers/Deux-alpinistes-meurent-dans-une-avalanche-en-Isere/story/10446351
所以主要是法国或瑞士当地报纸。我想将每个链接打印在一个单独的文件夹中,我尝试使用一组文件句柄并使用 的“getstore”方法来执行此操作LWP::Simple
,但是我无法在所有链接上进行循环。它会创建所有文件,但每个文件中只打印一个 URL 的内容。我找不到任何关于LWP::Simple
在阵列上运行的信息,似乎每个人都使用这个模块,只有一个或两个 URL。
我也有一个看起来像这样的哈希的想法:
#!/usr/bin/perl -w
use strict;
use locale;
use warnings;
#use diagnostics;
use utf8;
binmode(STDIN, "encoding(utf8)");
binmode(STDOUT, "encoding(utf8)");
binmode(STDERR, "encoding(utf8)");
use LWP::Simple;
use HTML::Parse;
open (CLEANURL, '<:utf8', "clean_keyword_url_5.3.txt") || die ("Cannot open File\n");
#open(STORECODE, '>:utf8', "Bstored_keyword_url_5.3.html") || die ("Cannot open File\n");
my $url2parse;
my @arg = <CLEANURL>;
close (CLEANURL);
my @filehandles;
my $i;
for ($i = 0; $i<@arg; $i++){
local *FILE;
open (FILE, '>:utf8', "Bstored_keyword_url_5.3.$i.html")|| die;
push (@filehandles, *FILE);
}
foreach my $arg(@arg) {
$url2parse = parse_html(get($arg))->format;
foreach my $file(@filehandles){
my %hash = {key => $file};
$hash{key} .= $val;
print $file "$hash{key}";
}
}
#close (STORECODE);
您可能会注意到此代码不起作用。问题是我无法完全理解它。
因此,如果您有任何想法,那将非常有帮助。谢谢 !!!