gpt4 book ai didi

perl - WWW::Mechanize::Firefox follow_link 不工作

转载 作者:行者123 更新时间:2023-12-02 02:08:12 24 4
gpt4 key购买 nike

我正在尝试使用 Perl 中的链接。我的初始代码:

use WWW::Mechanize::Firefox;
use Crypt::SSLeay;
use HTML::TagParser;
use URI::Fetch;
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME}=0; #not verifying certificate
my $url = 'https://';
$url = $url.@ARGV[0];

my $mech = WWW::Mechanize::Firefox->new;
$mech->get($url);

$mech->follow_link(tag => 'a', text => '<span class=\"normalNode\">VSCs</span>');
$mech->reload();

我找到了 here tagtext 选项以这种方式工作,但我收到错误 MozRepl::RemoteObject: SyntaxError: The expression is not a legal expression。我试图对文本中的一些字符进行转义,但错误还是一样。然后我改变了我的代码添加:

my @list = $mech->find_all_links();
my $found = 0;
my $i=0;
while($i<=$#list && $found == 0){
print @list[$i]->url()."\n";
if(@list[$i]->text() =~ /VSCs/){
print @list[$i]->text()."\n";
my $follow =@list[$i]->url();
$mech->follow_link( url => $follow);
}
$i++;
}

但是又出现了一个错误:没有找到匹配的链接'//a[(@href = "https://... 并且还有很多文本似乎是链接的描述。我希望我说清楚了,如果没有,请告诉我还有什么要补充的。感谢大家的帮助。

这是我要访问的链接部分:

<li id="1" class="liClosed"><span class="bullet clickable">&#160;</span><b><a href="/centcfg/vsc_list.asp?entity=allvsc&amp;selector=All"><span class="normalNode">VSCs</span></a></b>
<ul id="1.l1">
<li id="i1.i1" class="liBullet"><span class="bullet">&#160;</span><b><a href="/centcfg/vsc_edit.asp?entity=vsc&amp;selector=1"><span class="normalNode">First</span></a></b></li>
<li id="i1.i2" class="liBullet"><span class="bullet">&#160;</span><b><a href="/centcfg/vsc_edit.asp?entity=vsc&amp;selector=2"><span class="normalNode">Second</span></a></b></li>
<li id="i1.i3" class="liBullet"><span class="bullet">&#160;</span><b><a href="/centcfg/vsc_edit.asp?entity=vsc&amp;selector=3"><span class="normalNode">Third</span></a></b></li>
<li id="i1.i4" class="liBullet"><span class="bullet">&#160;</span><b><a href="/centcfg/vsc_edit.asp?entity=vsc&amp;selector=4"><span class="normalNode">Fourth</span></a></b></li>
<li id="i1.i5" class="liBullet"><span class="bullet">&#160;</span><b><a href="/centcfg/vsc_edit.asp?entity=vsc&amp;selector=5"><span class="normalNode">None</span></a></b></li>
</ul>

我在 Windows 7 中工作,MozRepl 是 1.1 版,我使用 64 位的 Strawberry perl 5.16.2.1

最佳答案

在研究了给定的代码之后,我能够让 W::M::F 按照以下方式跟踪链接:

use WWW::Mechanize::Firefox;
use Crypt::SSLeay;
use HTML::TagParser;
use URI::Fetch;

...

$mech->follow_link(xpath => '//a[text() = "<span class=\"normalNode\">VSCs</span>"]');
$mech->reload();

注意 xpath 参数而不是 text

我没有仔细研究 W::M::F 源代码,但在幕后它试图将给定的 text 参数转换为 XPath 字符串,如果 text 包含许多 XML/HTML 标记,这是你的情况,这可能会让他发疯。

关于perl - WWW::Mechanize::Firefox follow_link 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13962336/

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