在我的空闲时间,我一直在尝试通过使用LWP :: Simple脚本来改进我的perl功能来轮询一个特定网站的产品页面检查产品的价格(我有点perl noob)。该脚本还保留了该项目的最后价格的非常简单积压(因为价格频繁变化)。用Perl查询网站LWP ::简单来处理网上价格
我想知道是否有任何方法可以进一步自动化脚本,这样我就不必显式地将页面的URL添加到最初的散列(即保留一个关键术语数组并执行搜索查询亚马逊找到页面或价格?)。无论如何,我可以做到这一点,不涉及我只是复制亚马逊的搜索网址和解析我的关键字? (我知道用正则表达式处理HTML通常是不好的形式,我只是用它,因为我只需要一小块数据)。
#!usr/bin/perl
use strict;
use warnings;
use LWP::Simple;
my %oldPrice;
my %nameURL = (
"Archer Season 1" => "http://rads.stackoverflow.com/amzn/click/B00475B0G2",
"Code Complete" => "http://rads.stackoverflow.com/amzn/click/0735619670",
"Intermediate Perl" => "http://rads.stackoverflow.com/amzn/click/0596102062",
"Inglorious Basterds (2-Disc)" => "http://rads.stackoverflow.com/amzn/click/B002T9H2LK"
);
if (-e "backlog.txt"){
open (LOG, "backlog.txt");
while(){
chomp;
my @temp = split(/:\s/);
$oldPrice{$temp[0]} = $temp[1];
}
close(LOG);
}
print "\nChecking Daily Amazon Prices:\n";
open(LOG, ">backlog.txt");
foreach my $key (sort keys %nameURL){
my $content = get $nameURL{$key} or die;
$content =~ m{\s*\$(\d+.\d+)} || die;
if (exists $oldPrice{$key} && $oldPrice{$key} != $1){
print "$key: \$$1 (Was $oldPrice{$key})\n";
}
else{
print "\n$key: $1\n";
}
print LOG "$key: $1\n";
}
close(LOG);
谢谢,我会研究HTML :: TreeBuilder进行解析。我很好奇你对URI_Escape的使用,因为我不完全熟悉它。使用URI Escape有什么好处,而不仅仅是将搜索词加入到一起并添加到关键字中? – Cooper 2011-02-18 17:42:01
@Bob如果您的搜索字词包含一些URL不友好的字符(&符号,问号等),则纯连接会产生无效的URL。 – bvr 2011-02-18 17:53:18