2012-10-26 4 views
-1

다음 코드를 클릭하면 텍스트와 함께 각 링크로 이동합니다 ... 무슨 일이 일어나고 있는지 $l은 문자 A를 유지하고 A 26x에 대한 페이지를 수집합니다 ... 어떤 아이디어?배열에 변수 전달

my $mech = WWW::Mechanize->new(); 
$mech->get($info->website); 

my $te = HTML::TableExtract->new(); 
my @abc = ("A" .. "Z"); 

foreach my $letter (@abc){ 

$mech->find_link(text => $letter); 
$mech->follow_link(text => $letter); 

$content = $mech->content(); 

$te->parse($content); 

$table = $te->first_table_found; 

$str .= Dumper $table; 

$mech->back(); 
} 
+1

'print "$ l \ n";을 추가하면 알 수 있듯이, – ikegami

+0

나는 더 자세히 설명해야합니다. $ l을 인쇄하여 작동하는지 확인한 다음, 예상대로 알파벳을 인쇄합니다. 하지만 나는 $ 테이블의 내용을 임시 파일에 저장하고 임시 파일을 보면 페이지 A의 26 인스턴스를보고 다른 페이지의 데이터를 수집하지 않습니다 ... 페이지 A에 남아있는 것처럼 보입니다. – user1563849

답변

0

문제는 HTMLTableExtract가 새 데이터를 가져 오지 못했기 때문입니다. TE 초기화를 $ te-> parse ($ content) 루프로 옮겨서 이미 가지고 있던 것을 덮어 썼다.

+0

인쇄하면 알파벳이 인쇄되지만 this $ mech-> follow_link (text => $ l); 변수를 얻지 못합니다 A – user1563849

+0

네, 인쇄 $ l을 사용하여 인쇄 할 경우 알파벳이 생깁니다. 그러나 콘텐츠를 넣는 임시 파일을 보면 페이지 A의 인스턴스 26 개를 얻습니다. .... 다른 페이지로 이동하지 않습니다 .... – user1563849

+1

그래, 문제는 foreach가 제대로 작동하지 않습니다. 문제는 어떤면에서 Mech와 관련이 있습니다. 1) 전체 코드를 여기에 게시하거나 붙여 넣을 수 있으며 링크하려는 페이지 또는 해당 페이지의 소스에 대한 링크를 게시 할 수 있습니까? 문제 해결의 첫 번째 규칙은 문제를 정확하게 정의하는 것입니다. 당신은 아직 거기 있지 않습니다. – jshy

0

링크를 따른 후에는 모든 링크를 다시 사용할 수 있도록 원래 페이지로 돌아 가야합니다. 루프 마지막에

$mech->back; 

을 추가하십시오.

+0

나는 그것을 시도 ... 그것은 도움이되지 않습니다 ... – user1563849