使用我自己的表达式尝试使用它来使用我的项目。但经过几个小时的互联网搜索后,我仍然无法让它上班。 尝试下面的代码(不是我的),但它只产生" die"声明。我自己的代码(这里的另一个问题)只返回"按任意键..."我做错了什么?
#!/usr/bin/perl -w
# cookbook-rank - find rank of Perl Cookbook on Amazon
use LWP::Simple;
my $html = get("http://www.amazon.com/exec/obidos/ASIN/1565922433")
or die "Couldn't fetch the Perl Cookbook's page.";
$html =~ m{Amazon\.com Sales Rank: </b> ([\d,]+) </font><br>} || die;
my $sales_rank = $1;
$sales_rank =~ tr[,][]d; # 4,070 becomes 4070
print "$sales_rank\n";
答案 0 :(得分:4)
当下载的内容不包含任何与正则表达式匹配的文本时,会发生die
。除了下载匹配的假设之外,LWP或代码本身没有任何问题。 (die
声明最好包含对出错的解释。)
答案 1 :(得分:0)
自从编写该示例以来,看起来Amazon HTML已经发生了变化。该页面不再包含字符串&#34; Amazon.com Sales Rank&#34;。相反,它现在说&#34;亚马逊畅销书排名:&#34;。
但是您需要查看该页面的HTML源代码。出于某种原因,亚马逊在该标签和包含实际销售排名的行之间插入了超过30个空行。
总而言之,这就是为什么屏幕抓取是一个坏主意的一个很好的例子。建议您使用亚马逊的产品API。