Perl 机械化 Firefox 单击按钮(不是 HTML 形式)
Perl Mechanize Firefox click button (not in HTML form)
请考虑以下代码:
我需要帮助点击网页上的季度按钮。
#!/usr/bin/perl
use strict;
use WWW::Mechanize::Firefox;
my $mech = WWW::Mechanize::Firefox->
new
(
create => 1,
activate => 1,
launch => 'c:\Program Files (x86)\Mozilla Firefox\firefox.exe',
);
my $url = 'http://finance.yahoo.com/quote/AAPL/financials?p=AAPL';
$mech->get($url);
for (1..15)
{
last if $mech->xpath('//[@class="Fl(end)"]', all => 1);
sleep(1);
}
$mech->click_button(value => 'Quarterly');
按钮位于:
<div class="Fl(end)" data-reactid="319">
<button class="P(0px) M(0px) C($actionBlue) Bd(0px) O(n)">
<div class="Fz(s) Fw(500) D(ib) Pend(15px) H(18px) C($finDarkLink):h Mend(15px) BdEnd Bdc($subTabNavGray) C($actionBlue)">
<span>Annual</span>
</div>
</button>
<div class="Fz(s) Fw(500) D(ib) Pend(15px) H(18px) C($finDarkLink):h Mend(15px) C($finDarkLink)">
<span>Quarterly</span>
</div>
</div>
该页面最初加载年度数据,但我对季度数据感兴趣。
加载季度数据后,我有兴趣捕获 table <div class="Mt(10px)"><table class="Lh(1.7) W(100%) M(0)"><tbody><tr class="Bdbw(1px) Bdbc($lightGray) Bdbs(s) H(36px)"><td class="Fw(b) Fz(15px)">
中的内容以进行基本面分析。
如有任何帮助,我们将不胜感激。
谢谢!
您不能使用 click_button
单击不在表单中的内容。相反,您需要使用 click
。要获得正确的按钮,我们可以使用 xpath 表达式。
$mech->click({ xpath => '//button[.//span[text()="Quarterly"]]' });
表情看似复杂,其实还好
//button[.//span[text()="Quarterly"]]
//button # the button element anywhere in the page
[ ] # that contains
. # relative to it's position
//span # a span element
[ ] # that contains
text()= # a text node
"Quarterly" # with the exact string "Quarterly"
它会给你一个按钮,click
会点击它。
(请注意,我只测试了 xpath 表达式,而不是实际的 Perl 代码)。
请考虑以下代码:
我需要帮助点击网页上的季度按钮。
#!/usr/bin/perl
use strict;
use WWW::Mechanize::Firefox;
my $mech = WWW::Mechanize::Firefox->
new
(
create => 1,
activate => 1,
launch => 'c:\Program Files (x86)\Mozilla Firefox\firefox.exe',
);
my $url = 'http://finance.yahoo.com/quote/AAPL/financials?p=AAPL';
$mech->get($url);
for (1..15)
{
last if $mech->xpath('//[@class="Fl(end)"]', all => 1);
sleep(1);
}
$mech->click_button(value => 'Quarterly');
按钮位于:
<div class="Fl(end)" data-reactid="319">
<button class="P(0px) M(0px) C($actionBlue) Bd(0px) O(n)">
<div class="Fz(s) Fw(500) D(ib) Pend(15px) H(18px) C($finDarkLink):h Mend(15px) BdEnd Bdc($subTabNavGray) C($actionBlue)">
<span>Annual</span>
</div>
</button>
<div class="Fz(s) Fw(500) D(ib) Pend(15px) H(18px) C($finDarkLink):h Mend(15px) C($finDarkLink)">
<span>Quarterly</span>
</div>
</div>
该页面最初加载年度数据,但我对季度数据感兴趣。
加载季度数据后,我有兴趣捕获 table <div class="Mt(10px)"><table class="Lh(1.7) W(100%) M(0)"><tbody><tr class="Bdbw(1px) Bdbc($lightGray) Bdbs(s) H(36px)"><td class="Fw(b) Fz(15px)">
中的内容以进行基本面分析。
如有任何帮助,我们将不胜感激。
谢谢!
您不能使用 click_button
单击不在表单中的内容。相反,您需要使用 click
。要获得正确的按钮,我们可以使用 xpath 表达式。
$mech->click({ xpath => '//button[.//span[text()="Quarterly"]]' });
表情看似复杂,其实还好
//button[.//span[text()="Quarterly"]]
//button # the button element anywhere in the page
[ ] # that contains
. # relative to it's position
//span # a span element
[ ] # that contains
text()= # a text node
"Quarterly" # with the exact string "Quarterly"
它会给你一个按钮,click
会点击它。
(请注意,我只测试了 xpath 表达式,而不是实际的 Perl 代码)。