在我的空閒時間,我一直在嘗試通過使用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