我有一个静态页面,其中包含指向服务器上文本文件的多个链接。 (大约100个链接都在Web浏览器上打开文本文件内容)。
文本文件包含文本和数字,我需要获取具有百分比的特定数字(即52.56%),并将其存储到另一个带有链接名称的text / csv文件中。
链接基本上采用单行格式:
VAA007
VAB038
VAC041
VAD050
VAE031
VEA032
VEB053
VEC044
VEF015
文本文件具有以下值以及许多其他文本和数字:
# Result Summary:
# Overall Run:191,Not Run:161,Covered:54.26%
链接地址/ URL的格式如下:
https://myWeb.local/~gags/cgi-bin/latestRun.pl
https://myWeb.local/~gags/cgi-bin/showReport.pl?fn=/OUT/VAA007.txt
https://myWeb.local/~gags/cgi-bin/showReport.pl?fn=/OUT/VAD050.txt
是否有一些简单的方法可以解决上述问题并将结果导入文本文件或CSV文件?
答案 0 :(得分:1)
这应该可以解决问题:
!/bin/sh
URL=https://myWeb.local/~gags/cgi-bin/showReport.pl?fn=/OUT/
for file in `cat links.txt`
do
curl -s "$URL$file.txt" | awk -F':' '/^# Overall/ {print $NF}' > "$file.txt"
done
假设链接存储在文件links.txt
中。如果您需要先获取它们,可以将curl -s https://someurl > links.txt
添加到脚本的顶部。
您没有指定是否必须登录服务器,如果是,则指定使用何种登录方案。如果这是一项要求,可以使用curl
轻松处理。
答案 1 :(得分:0)
如果您可以为此运行.NET程序,我建议:
对于每个锚标记,提取href
值并使用它来点击您的页面:
WebClient wc = new WebClient();
//Authenticate:
wc.Credentials = new System.Net.NetworkCredential("[USER]", "[PASSWORD]", "[DOMAIN]");
var url = "[THE URL FORM THE ANCHOR]";
var result = wc.DownloadString(url);
var resultArray = result.Split(',');
var percent = resultArray[2].Split(':');
return percent;
答案 2 :(得分:0)
当然,未经测试,因为您没有提供足够的输入数据。
use strictures;
use Text::CSV qw();
use WWW::Mechanize qw();
use autodie qw(:all);
my $static_page = 'http://…';
# or perhaps 'file://…' if reading from the local file system
my $url_pattern =
qr'https://myWeb[.]local/~gags/cgi-bin/showReport[.]pl[?]fn=/OUT/(V.....)[.]txt';
my $csv = Text::CSV->new({ binary => 1, auto_diag => 2 })
or die 'Cannot use CSV: ' . Text::CSV->error_diag;
open my $out, '>:encoding(UTF-8)', 'percentages.csv';
my $mech = WWW::Mechanize->new;
$mech->get($static_page);
for my $link ($mech->find_all_links(url_regex => $url_pattern)) {
my $text_file_url = $link->url_abs;
my ($v_id) = $text_file_url =~ /$url_pattern/;
$mech->get($text_file_url);
my $content = $mech->content;
my ($percentage) = $content =~ /Covered:(.*)%/;
$csv->print($out, [$v_id, $percentage]);
}
close $out;
答案 3 :(得分:-1)
你可以试试SGMLParser& urllib如果你知道一些python。