gpt4 book ai didi

perl - 用 Perl 中的 HTML 副本替换特定的内联 CSS

转载 作者:行者123 更新时间:2023-12-01 15:52:29 25 4
gpt4 key购买 nike

这是我第一次使用 Stack Overflow,所以如果我做错了什么请告诉我。

我目前正在尝试编写一个“scraper”,因为没有更好的术语,它将提取 html 并将某些内联 CSS 样式替换为 HTML 对应样式。例如,我有这个 HTML:

<p style="text-align:center"><span style="font-weight:bold;font-style:italic;">Some random text here. What's here doesn't matter so much as what needs to happen around it.</span></p>

我希望能够替换 font-weight:bold<b> , font-style:italic<i> , text-align:center<center> .之后,我将使用正则表达式删除所有非基本 HTML 标记和任何属性。 KISS 绝对适用于此。

我读过这个问题:Convert CSS Style Attributes to HTML Attributes using Perl以及其他一些关于 HTML::TreeBuilder 和其他模块(如 HTML::TokeParser)的使用,但到目前为止我自己都被绊倒了。

我是 Perl 的新手,但对一般的编码并不陌生。道理是一样的。

这是我目前所拥有的:

#!/usr/bin/perl
use warnings;
use strict;

use HTML::TreeBuilder;

my $newcont = ""; #Has to be set to something? I've seen other scripts where it doesn't...this is confusing.
my $html = <<HTML;
<p style="text-align:center"><span style="font-weight:bold;font-style:italic;">Some random text here. What's here doesn't matter so much as what needs to happen around it.</span> And sometimes not all the text is styled the same.</p>
HTML

my $tb = HTML::TreeBuilder->new_from_content($html);
my @spans = $tb->look_down(_tag => q{span}) or die qq{look_down for tag failed: $!\n};

for my $span (@spans){
#What next?? A print gives HASH, not really workable. Split doesn't seem to work...I've never felt like such a noobie coder before.
}

print $tb->as_HTML;

希望有人能帮助我,告诉我我可能做错了什么等等。我真的很想知道还有什么其他可能的方法可以做到这一点。或者如果以前做过。

此外,如果有人可以通过建议我应该使用哪些标签来提供帮助,那就太好了。我知道唯一肯定会使用的是 perl。

最佳答案

从 HTML::Element 文档看来,look_down() 返回 HTML::Element 对象的列表。Perl 对象通常是对散列的引用(尽管它们不一定是)--这就是为什么在打印 $span 时会得到 HASH 的原因。

无论如何,在你的for循环中,你应该能够调用

 $span->method()

其中 method 是 HTML::Element 的任何方法。对于您的目的,方法 all_attr()as_text()replace_with() 看起来很有前途。

我尝试链接到每个方法,但不喜欢粗糙的 CPAN 锚定链接,因此为方便起见,这里有一个指向主文档页面的快速链接:

https://metacpan.org/pod/HTML::Element

关于perl - 用 Perl 中的 HTML 副本替换特定的内联 CSS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1705695/

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