2016-08-11 163 views
0

我正在嘗試使用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'。

回答

1

你應該總是use strict你寫的每一個Perl程序的頂部,特別是要求你的代碼幫助之前。它會立即發現問題

您的WWW::Mechanize對象在$browser,但您已撥打$mech->select$mech還沒有被定義,所以你會得到一個錯誤消息,說select不能被稱爲一個未定義的值

+0

啊哇,應該使用嚴格。但是,即使在將$ mech更改爲$ browser之後,選擇仍然不成立。沒有錯誤,但是在按下頁面上的其他位置提交後,我的代碼吐出了URL,結果是下拉選擇仍然不起作用。 –

+1

@AdityaJ:使用'$ browser-> dump_forms'查看頁面上表單的狀態,以便檢查您的選擇是否有效。您可能需要使用表單選擇方法之一,以便'select'知道要使用哪種表單。 – Borodin

+0

這非常有幫助,謝謝。 –