2012-10-26 42 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