【发布时间】:2015-11-06 12:59:13
【问题描述】:
我找到了一种通过我找到的 Perl 脚本从图像链接中提取替代文本的方法。但是,该方法需要下载目标 HTML;通过 Perl 脚本处理它,然后生成一个带有我需要的特定 alt 文本的文本文件;然后删除一些我无法通过代码手动过滤掉的额外文本,因为我不知道如何使正则表达式与 Perl 一起工作(我尝试安装 PCRE 无济于事)。
这种方法仍然不切实际,而且我确信我可以通过 JavaScript 小书签更快地提取替代文本,并立即将输出整齐地列在新选项卡中。但是,我不知道如何将我拥有的 Perl 脚本转换为 JavaScript,也不知道如何从头开始编写。
这是 Perl 脚本:
{
# Get data from HTML file
my $From = cwd() . '/' . $ARGV[0];
open( HTMLFILE, '<' . $From ) or die( "Cannot open $From to read." );
my $Html;
read HTMLFILE, $Html, -s $From;
close HTMLFILE;
# Find IMG elements
print "Images found!";
my %AltTexts;
while ( $Html =~ /(<IMG\b.*?>)/isg ) {
my $ImgElement = $1;
# Find SRC tag
$ImgElement =~ /SRC\s*=\s*([\"\'])(.*?)\1/is;
my $Src = $2;
# Find ALT tag & store text
if ( $ImgElement =~ /ALT\s*=\s*([\"\'])(.*?)\1/is ) {
$AltTexts{$Src} = $2;
}
else { # No ALT found so give it default text if none already found
unless ( exists( $AltTexts{$Src} ) ) {
$AltTexts{$Src} = 'NO_ALT_TEXT';
}
}
}
# Write extracted data to a file
my $To = cwd() . '/' . $ARGV[0] . '.txt';
open( ALTTEXTFILE, '>' . $To ) or die( "Cannot open $To to write." );
foreach my $SrcPath ( sort keys %AltTexts ) {
print ALTTEXTFILE "$AltTexts{$SrcPath}\n";
}
close ALTTEXTFILE;
}
我确实对其进行了调整,以阻止脚本打印链接、删除空行等。
原脚本可以在here找到
那么,我的问题是用于提取 alt 文本的 JavaScript 是什么样的?
【问题讨论】:
标签: javascript html regex perl alt