感谢所有帮助我实现这一目标的人.
现在我的新问题.我正在使用2003年编写的一本书,该教程试图抓住一个已经改变的页面.
原始地址是:" http://www.oreilly.com/catalog/prdindex.html "此页面不再存在,但会重定向到新页面:" http://oreilly.com/store/complete.html "
问题"我认为"是html代码在7年内发生了变化.代码曾经是这样的:
<tr bgcolor="#ffffff">
<td valign="top">
<a href="http://oreilly.com/catalog/googlehks">Google Hacks</a><br />
</td>
<td valign="top" nowrap="nowrap">0-596-00447-8</td>
<td valign="top" align="right">$24.95</td>
<td valign="top" nowrap="nowrap" align="center">
<a href="http://safari.oreilly.com/0596004478">Read it on Safari</a>
</td>
<td valign="top" nowrap="nowrap">
<a href="http://examples.oreilly.com/googlehks">Get examples</a>
</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
所以无论如何html已经改变了.您可以通过查看浏览器上的源代码来查看它.
当我运行脚本时,我收到此错误:
在/usr/lib/perl5/site_perl/5.8.8/HTML/TreeBuilder.pm第93行的子例程条目中使用未初始化的值.无法在./SpiderTutorial_19_09.pl第67行的未定义值上调用方法"as_HTML".有0本Perl书籍和0本Java书籍.Java比Perl多0个.
这是我正在尝试运行的代码.
#!/usr/bin/perl -w
use strict;
use LWP::Simple;
use HTML::TreeBuilder;
my $url = 'http://oreilly.com/store/complete.html';
my $page = get( $url ) or die $!;
my $p = HTML::TreeBuilder->new_from_content( $page );
my($book);
my($edition);
my @links = $p->look_down(
_tag => …Run Code Online (Sandbox Code Playgroud)