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不能被称为一个未定义的值

+0

啊哇,应该使用严格。但是,即使在将$ mech更改为$ browser之后,选择仍然不成立。没有错误,但是在按下页面上的其他位置提交后,我的代码吐出了URL,结果是下拉选择仍然不起作用。 –

+1

@AdityaJ:使用'$ browser-> dump_forms'查看页面上表单的状态,以便检查您的选择是否有效。您可能需要使用表单选择方法之一,以便'select'知道要使用哪种表单。 – Borodin

+0

这非常有帮助,谢谢。 –