WWW :: Mechanize-从下拉列表中选择
问题描述:
我正在尝试使用WWW :: Mechanize从下拉菜单中选择一个选项。下面是代码我现在所拥有的(仅适用于从下拉菜单中选择部分):WWW :: Mechanize-从下拉列表中选择
use warnings;
use WWW::Mechanize;
my $url = 'http://genome.ucsc.edu/cgi-bin/hgBlat?command=start';
my $browser = WWW::Mechanize->new();
$browser->get($url);
$browser->select('db', 'hg38');
$browser->submit();
选择不工作。
下面是从网站这个下拉菜单中的HTML在那里我已经手动选择所需的选项:
<select name="db"> = $0
<option selected value="hg38">Dec. 2013 (GRch38/hg38)</option>
<option value="hg19">Feb. 2009 (GRch17/hg19)</option>
<option value="hg18">Mar. 2006 (NCBI36/hg18)</option>
<option value="hg17">May 2004 (NCBI35/hg17)</option>
<option value="hg16">July 2003 (NCBI34/hg16)</option>
</select>
如何使用机甲选择的选项?相关网站的网址是'http://genome.ucsc.edu/cgi-bin/hgBlat?command=start'。
答
你应该总是use strict
你写的每一个Perl程序的顶部,特别是要求你的代码帮助之前。它会立即发现问题
您的WWW::Mechanize
对象在$browser
,但您已拨打$mech->select
。 $mech
还没有被定义,所以你会得到一个错误消息,说select
不能被称为一个未定义的值
啊哇,应该使用严格。但是,即使在将$ mech更改为$ browser之后,选择仍然不成立。没有错误,但是在按下页面上的其他位置提交后,我的代码吐出了URL,结果是下拉选择仍然不起作用。 –
@AdityaJ:使用'$ browser-> dump_forms'查看页面上表单的状态,以便检查您的选择是否有效。您可能需要使用表单选择方法之一,以便'select'知道要使用哪种表单。 – Borodin
这非常有帮助,谢谢。 –