【发布时间】:2015-04-15 14:06:09
【问题描述】:
我已经用我自己的表达方式进行了尝试,让它与我的项目一起工作。但是在网上看了几个小时后,我仍然无法正常工作。 尝试下面的代码(不是我的),但它只会产生“死”语句。我自己的代码(这里有另一个问题)只返回“按任意键..”我做错了什么?
#!/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";
【问题讨论】:
-
您在运行此脚本时得到的确切错误信息是什么?
-
请将错误消息复制/粘贴为文本。图片链接很烦人。
-
用正则表达式解析 HTML 是一场失败的游戏。格式上的微小更改可能会破坏您的代码,这就是这里发生的情况。您真正想要的是一个 HTML 解析器,并使用 XPath 通过 ID 查找您想要的元素(这里是 #SalesRank)。那是another question which has already been answered。更好的是,您应该使用 API(如果可用),而不是抓取缓慢且容易更改的页面。