我试图将链接中链接文本的颜色更改为另一个脚本(不受我控制)生成的页面上的黄色。更具体地说,我在本页面的两个表格中搜索特定的文本。一旦我找到文本(它们是超链接),我想将它们的颜色更改为黄色。Perl - 使用HTML更改链接的颜色::元素
我使用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";
}
}
感谢您的答案,但我不能使用CSS。该网页是由一个自动化脚本创建的,该脚本只是抽出HTML而没有链接到它的任何CSS,我不能添加任何CSS(公司规则)。我唯一的解决方案是编辑脚本输出的HTML。 –
@phileasfogg正如我所说,''的解决方案可以很容易地适应使用字体标签,所以不需要CSS。基本上'HTML :: Element-> new(“font”,color =>“yellow”)''。请注意'''标签出现在HTML 3.2中,在HTML 4.0 Transitional中不推荐使用,并且在HTML 4.0 Strict及更高版本中* * invalid *,因此请务必首先检查文档类型。 – amon
啊,对不起,没有读到您刚刚发表的评论,对此抱歉。再次感谢您的帮助。 –