2012-10-26 45 views
-1

我有下面的代碼應該點擊並轉到每個文本鏈接...發生什麼是$l保持字母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以查看它是否正在工作,是的,它確實打印了預期的字母表。但是我把$表的內容放在一個臨時文件中,如果我查看那個臨時文件,我會看到26個頁面A的實例,它不會從任何其他頁面收集數據......好像它停留在頁面A上。 – user1563849

回答

0

問題是HTMLTableExtract沒有獲取新數據。將TE初始化移入循環$ te-> parse($ content)覆蓋了已有的東西。

+0

如果我打印它會打印字母表,但是這個$ mech-> follow_link(text => $ l);沒有得到它說的變量A – user1563849

+0

是的,如果我使用print $ l打印出來,我得到了字母表,但是如果我看看將內容放入的臨時文件,我會得到26個A頁實例,它沒有去其他網頁.... – user1563849

+1

好的,所以問題不是沒有正常工作的foreach。問題在某種程度上與Mech有關。 1)你可以在這裏發佈完整的代碼或者粘貼一個鏈接到你想鏈接的頁面或頁面的源代碼?排除故障的第一條原則是準確定義問題。你還沒有。 – jshy

0

在下一個鏈接之後,您必須返回到原始頁面以再次獲得所有鏈接。只需添加

$mech->back; 

到循環結束。

+0

我試過了......它沒有幫助... – user1563849