2016-08-11 5 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(); 

선택이 작동하지 않습니다.

<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> 

이 어떻게 멕이 옵션을 선택하는 데 사용할 수 있습니다 여기에

내가 수동으로 원하는 옵션을 선택한 사이트에서이 드롭 다운 메뉴의 HTML입니까? 해당 웹 사이트의 URL은 'http://genome.ucsc.edu/cgi-bin/hgBlat?command=start'입니다.

답변

1

당신은 당신이 쓰는 모든 펄 프로그램의 상단에 항상use strict해야한다, 특히 코드에 도움을 요청하기 전에. 즉시 문제가 밝혀 졌을 것입니다

WWW::Mechanize 개체는 $browser에 있지만 $mech->select입니다. $mech이 정의되지 않았기 때문에 정의되지 않은 값으로 을 호출 할 수 없다는 오류 메시지가 표시됩니다.

+0

아, 엄밀하게 말해서 사용해야합니다. 그러나 $ mech를 $ browser로 변경 한 후에도 선택 항목이 만들어지지 않습니다. 오류는 없지만 페이지의 다른 곳에서 submit을 누르면 URL에서 코드가 유출되었습니다. 그 결과 드롭 다운 선택이 여전히 작동하지 않습니다. –

+1

@AdityaJ .:'$ browser-> dump_forms'를 사용하면 페이지의 양식 상태를 볼 수 있으므로 선택이 제대로되었는지 확인할 수 있습니다. 'select'가 작업 할 양식을 알 수 있도록 양식 선택 방법 중 하나를 사용해야 할 수도 있습니다. – Borodin

+0

덕분에 많은 도움이되었습니다. –

관련 문제