2009-11-25 5 views
0

페이지에서 모든 링크를 추출하고 싶습니다. HTML:LinkExtor을 사용하고 있습니다. HTML 콘텐츠 페이지 만 가리키는 모든 링크를 어떻게 추출합니까?Perl의 HTML 페이지를 가리키는 JavaScript의 링크를 어떻게 추출합니까?

또한 링크의 이러한 종류를 추출 할 수 없습니다 :

javascript:openpopup('http://www.admissions.college.harvard.edu/financial_aid/index.html'), 

편집 : HTML 페이지 - 텍스트/HTML을. 나는 그림 등을 인덱싱하지 않을 것입니다.

+2

정확히 "HTML 콘텐츠 페이지 만"은 무엇입니까? 즉, 어떤 종류의 링크를 추출하지 않으시겠습니까? – innaM

답변

2

예, HTML :: LinkExtor는 javascript를 인식하지 못합니다. 실제로, 일반적으로 실제 코드를 실행해야하기 때문에 의 URL이 자바 스크립트에 포함 된 것을 인식하는을 얻는 것은 거의 없습니다.

1

Perl은 무차별 대입을 통해 이것을 수행하는 많은 방법을 갖게 될 것입니다. Push/Pull Parser를 사용하여 태그 사이를 이동할 수 있습니다. 전체 페이지를 스 루핑하고 링크 또는 JavaScript 내의 링크에 대해 정규식을 적용 할 수 있습니다.

WWW::Mechanize::Plugin::JavaScript을 보았습니까? WWW::Mechanize 모듈은 가장 친한 친구를 사로 잡는 웹입니다 (봇을 시도하지는 않습니다). 필자는이 모듈을 사용했고 CPAN에서 가장 좋은 Perl 모듈 중 하나라고 말할 수 있습니다. 여기

은 CPAN에서 예입니다 는

$m->plugin('JavaScript')->set(
     'document', 'location', 'href' => 'http://www.perl.org/'); 
+0

훌륭한 모듈이며 FAQ는 매우 재미 있습니다. 특히 많은 사람들이 자바 스크립트 지원을 요청하기 때문에 ... http://search.cpan.org/dist/WWW-Mechanize/lib/WWW/Mechanize/ FAQ.pod – AmbroseChapel

0

나는 대부분의 링크 수집을 위해 WWW::Mechanize를 사용하는 거라고 주어진 값으로 명명 된 변수를 설정합니다. 그 외에는 내 자신의 매칭을 할 것입니다 :

my @links = $content =~ m`javascript:openpopup\('([^\']+)'`g; 
관련 문제