2014-11-01 76 views
0

我想用Perl来点击一个按钮。我得到HTML内容,然后找到点击按钮。 但是当我检查HTML内容时,“input type = hidden”。如何点击按钮(输入类型=隐藏)通过Perl?

HTML内容:

<div class="content freepts_cont"> 

<input type="hidden" id="network" value="5"/> 

<div class="like_notification"></div> 

Firebug的内容:

<div class="content freepts_cont"> 
<input id="network" type="hidden" value="5"> 
<div class="like_notification"></div> 
<div id="site-links-list"> 
<center> 
<div id="L_c3cbf051418f1ec690c445ad843144" class="yt-video-content" style="width: 520px;"> 
<div class="likedPagesSingle" style="width:400px;border:1px solid #E8E8E8;padding-top:15px; min-height:250px;"> 
<center> 
<center> 
<div class="fb_page_title"> 
<div style="width:100px; height:100px; overflow:hidden;"> 
<a style="display:block; width:100px; heigt:100px; overflow:hidden;" href="#"> 
<img style="width:100%; height:auto;" title="Night Thriller" alt="Night Thriller" src="/images/layout/youtube_page_view.png"> 
</a> 
</div> 
<a class="single_like_button btn3-wrap" onclick="openFbLWin(843144, 'JTJGMiUzQSVFMyVEQyUxNSU5MSU4NCUxMSU3RiVFNyU4OCUyM1clM0QyJUM3JUIwMw==');"> 
</center> 
<div class="mtop10" style="margin-bottom:10px;"> 
<div class="mtop10" style="margin-bottom:10px;"> 
</div> 
</div> 

我想用Perl点击: <a class="single_like_button btn3-wrap" onclick="openFbLWin(843144, 'JTJGMiUzQSVFMyVEQyUxNSU5MSU4NCUxMSU3RiVFNyU4OCUyM1clM0QyJUM3JUIwMw==');">

如何?

+0

您需要对JavaScript进行反向工程,然后用Perl重新实现,或者使用Selenium或PhantomJS等无头浏览器。 – Quentin 2014-11-01 19:31:07

回答

0

你最好的选择,并以我个人的经验很容易设置和使用将是

WWW::Mechanize

我不完全确定你到底想要做什么 - 更改隐藏输入的值,然后提交?也许这个小而未经测试的代码片段将对你有用。

如果你有更具体的问题,我也可能会帮助,但CPAN文档迄今已清理了我的任何问题,所以不要太快解雇他们;)

无论哪种方式,机械化是相当有据可查,并且对这项任务有用。

编辑:我不知何故忽略了你给的链接。此代码应该找到它。

编辑2:你可能想尝试WWW::Mechanize::Firefox,这似乎能够处理JavaScript。我会用它,但我已经习惯了机械化。也许其他人可以提出更好的选择。

my $mech = WWW::Mechanize->new(); 
$mech->follow_link(class => 'single_like_button btn3-wrap'); 
# alternatively, get the link object, see what you can do with that 
my $link = $mech->find_link(class => 'single_like_button btn3-wrap'); 
# or, if it is not the only one of class 
my @links = $mech->find_links(class => 'single_like_button btn3-wrap'); 
# now somehow get the link out of the list 

这可能行不通,因为它似乎并没有真正提供链接。在这种情况下,请尝试使用click()或click_button()。说实话,我不得不向你指出那里的文档,因为我对这个特定问题的经验有限,到目前为止,获得链接并遵循它们是我测试我的网站所需要做的。

与机械化祝你好运!

+1

WWW :: Mechanize不起作用,该按钮会触发JavaScript。 – Quentin 2014-11-01 19:29:25

相关问题