gpt4 book ai didi

javascript - 使用 JavaScript 书签从图像链接中提取替代文本

转载 作者:行者123 更新时间:2023-12-02 15:27:32 28 4
gpt4 key购买 nike

我找到了一种通过我找到的 Perl 脚本从图像链接中提取替代文本的方法。然而,该方法需要下载目标 HTML;通过 Perl 脚本对其进行处理,然后生成一个包含我需要的特定替代文本的文本文件;然后删除一些额外的文本,我无法通过代码手动过滤掉,因为我不知道如何使正则表达式与 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

所以,我的问题是用于提取替代文本的 JavaScript 是什么样的?

最佳答案

像这样:

javascript:(function() {
var imgs = document.images,alts=[];
for (var i=0;i<imgs.length;i++) {
alts.push(imgs[i].getAttribute("alt") || "no alt");
}
alert(alts.join("\n"));
})()

示例代码:

(function() {
var imgs = document.images,alts=[];
for (var i=0;i<imgs.length;i++) {
alts.push(imgs[i].getAttribute("alt") || "no alt");
}
console.log(alts);
})()
<img alt="alt1" />
<img alt="" />
<img alt="alt2" />

在新窗口中显示(允许弹出窗口阻止程序)

javascript:(function() {
var imgs = document.images,alts=[],w;
for (var i=0;i<imgs.length;i++) {
alts.push(imgs[i].getAttribute("alt") || "no alt");
}
if (alts.length>0) {
w = window.open("","_blank");
if (w) {
w.document.write(alts.join("<br />"));
w.document.close();
}
else {
alert("cannot pop\n"+alts.join("\n"));
}
}
})()

为了避免重复:

改变

alts.push(imgs[i].getAttribute("alt") || "no alt");

var alt = imgs[i].getAttribute("alt");
if (alts && alts.indexOf(alt)==-1) alts.push(alt);

关于javascript - 使用 JavaScript 书签从图像链接中提取替代文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33567379/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com