2015-01-26 5 views
3

나는 this LexisNexis search page에 검색 변수를 자동으로 입력하고 검색 결과를 검색하는 Perl 스크립트를 작성하려고합니다.WWW :: Mechanize를 사용하여 자동 검색

나는 WWW::Mechanize 모듈을 사용하고 있지만 검색 창 자체의 필드 이름을 파악하는 방법을 모르겠습니다. 지금까지 가지고있는 스크립트입니다 ->

#!/usr/bin/perl 
use strict; 
use warnings; 
use WWW::Mechanize; 
my $m = WWW::Mechanize->new(); 

my $url = "http://www.lexisnexis.com/hottopics/lnacademic/?verb=sr&csi=379740"; 
$m->get($url); 

$m->form_name('f'); 
$m->field('q', 'Test'); 
my $response = $m->submit(); 
print $response->content(); 

그러나이 웹 사이트의 검색 상자의 "이름"은 "q"가 아닙니다. 다음 오류가 발생합니다 - "메소드"값 "을 사이트/lib/WWW/Mechanize.pm 라인 1442에서 정의되지 않은 값에 호출 할 수 없습니다." 어떤 도움이라도 대단히 감사합니다. 고맙습니다 !

+5

해당 사이트의 [서비스 약관] (https://www.lexisnexis.com/terms/general.aspx)은 다음과 같이 말합니다. "기계적, 프로그래밍 방식, 로봇 방식, 스크립트 방식 또는 기타 방식을 통한 온라인 서비스 사용 서면으로 달리 동의하지 않는 한 온라인 서비스의 사용은 수동으로 수행되며 개별적이고 개별적인 검색 및 검색 활동을 통해서만 허용됩니다. "* – ThisSuitIsBlackNot

+1

이것은 학술 연구 프로젝트를위한 것이며 우리는 이 자동화를 수행하는 데 필요한 권한. 고맙습니다. – Amritha

+1

잘 알고 있습니다. 웹 사이트를 다 써 버리는 대부분의 사람들은 서비스 약관을 읽는 것을 방해하지 않습니다. – ThisSuitIsBlackNot

답변

5

브라우저에서 JavaScript를 비활성화하면 검색 양식이로드되지 않아 JavaScript에 의해로드된다는 것을 알 수 있습니다. 따라서 WWW::Mechanize으로 처리 할 수 ​​없습니다. WWW::Mechanize::Firefox을 보시면 작업에 도움이 될 것입니다. example scripts, cookbookFAQs을 확인하십시오.

Selenium을 사용하여 동일하게 수행 할 수도 있습니다 (Gabor's tutorial on Selenium 참조).

+0

Selenium을 사용하는 경우 [Selenium :: Remote :: Driver] (https://metacpan.org/pod/Selenium :: Remote :: Driver)는 제한된 경험으로 판단하는 훌륭한 선택입니다. – reinierpost

+0

정확합니다. WebDriver가 RC보다 좋습니다. –

+1

[WWW :: Mechanize :: Firefox]를 사용하여 [PerlTricks] (http://www.perltricks.com)에 대한 기사 쓰기 (http://perltricks.com/article/138/2014/12/8/ Controlling-Firefox-Perl) –

관련 문제