gpt4 book ai didi

perl - 解析时我没有得到 HTML 标签

转载 作者:行者123 更新时间:2023-12-04 23:42:15 27 4
gpt4 key购买 nike

我要解析的 HTML 代码片段是这样的:

<ul class="authors">
<li class="author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person">
<a href="/search?facet-creator=%22Charles+L.+Fefferman%22" itemprop="name">Charles L. Fefferman</a>,
</li>
<li class="author" itemprop="author" itemscope="itemscope" itemtype="http://schema.org/Person">
<a href="/search?facet-creator=%22Jos%C3%A9+L.+Rodrigo%22" itemprop="name">José L. Rodrigo</a>
</li>

我想提取整个 <a>元素,但当我试图用 WWW::Mechanize::TreeBuilder 解析它时我得到的唯一内容是作者的名字。所以:

我期待的内容:
<a href="/search?facet-creator=%22Charles+L.+Fefferman%22" itemprop="name">Charles L. Fefferman</a>,

<a href="/search?facet-creator=%22Jos%C3%A9+L.+Rodrigo%22" itemprop="name">José L. Rodrigo</a>

我收到的内容:
Charles L. Fefferman,
José L. Rodrigo

这是负责解析这个的代码:
my $mech = WWW::Mechanize->new();
WWW::Mechanize::TreeBuilder->meta->apply($mech);
$mech->get($addressdio);

my @authors = $mech->look_down('class', 'author');

print "Authors: <br />";
foreach ( @authors ) {
say $_->as_text(), "<br />";
}

我认为这可能与 as_text()有关,而且当 CGI 获取 HTML 时,它不会将其作为文本。

最佳答案

我处理它,但完全不同的方式 - 使用 HTML::TagParser:

my $html = HTML::TagParser->new("overwrite.xml");
my @li = $html->getElementsByAttribute('class','author');

foreach(@li){
my $a = $_->firstChild();
my $link = $a->getAttribute('href');
say $_->innerText;

say $link;
}

关于perl - 解析时我没有得到 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31468576/

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