我正在尝试在另一个脚本(不受我控制)生成的页面上将链接中的链接文本的颜色更改为黄色。更具体地说,我正在此页面上的两个表格中搜索特定文本。找到文本(超链接)后,我想将它们的颜色更改为黄色。
我正在使用 HTML::Element 并且可以轻松找到文本。问题是,没有指定链接颜色,所以链接使用默认值蓝色。我正在尝试将字体颜色的 HTML 元素添加到标签中,但运气不佳。
如果我尝试使用类似的东西(其中“$a”是我要编辑的链接的 HTML::Element 对象):
$a->attr("font color", "yellow");
它添加了属性,但不会更改链接内容的文本颜色。
如果我尝试类似:
my $content = $a->content;
$content->attr("font color", "yellow");
那只会添加文本
<font color=yellow>
到内容,而无需再次更改实际的内容文本颜色。
尝试将其拼接起来也不起作用。
我终于想到了这个:
my $yellowFont = HTML::Element->new('font', 'color' => 'yellow');
foreach my $item_ref ($a->content_refs_list) {
next if ref $$item_ref;
$yellowFont->push_content($$item_ref);
}
print $yellowFont->as_HTML, "\n";
从它创造的意义上说,它的效果很好:
<font color="yellow">201301022150-Job5</font>
但是这种变化并没有反映在 html 文档中!
我不知道如何将字体颜色属性插入到原始 html 文档中。
下面是我的整个脚本。这是一团糟,因为我一直在尝试各种不同的方法,但都没有成功。
#!/usr/local/bin/perl
use warnings;
use strict;
use HTML::TableExtract qw(tree);
use Data::Dumper qw(Dumper);
my @jobList = ();
if ($ARGV[0]) {@jobList = $ARGV[0];} else {die ("Need list of jobs as argument\n")};
my $ddHTMLFile = "./tmp_aptg";
my $te1 = HTML::TableExtract->new( depth => 1, count => 0);
my $te2 = HTML::TableExtract->new( depth => 1, count => 1);
$te1->parse_file($ddHTMLFile);
$te2->parse_file($ddHTMLFile);
my $table1 = $te1->first_table_found;
my $table2 = $te2->first_table_found;
my $table1_tree = $table1->tree;
my $table2_tree = $table2->tree;
foreach my $a ($table1_tree->find_by_tag_name("a")) {
my $href = $a->attr("href");
if ($href =~ m/$jobList[0]/) {
my $yellowFont = HTML::Element->new('font', 'color' => 'yellow');
foreach my $item_ref ($a->content_refs_list) {
next if ref $$item_ref;
$yellowFont->push_content($$item_ref);
}
#print $yellowFont->as_HTML, "\n";
$a->replacewith
$a->dump;
#my $table1_html = $table1_tree->as_HTML;
#my $document1_tree = $te1->tree;
#my $document1_html = $document1_tree->as_HTML;
#my $document_html = $document1_html;
#print "$document_html";
}
}