2011-11-24 16 views
0

全部, 我認識到反對gooogle ToC,但我試圖編寫一個perl腳本來執行谷歌搜索並返回命中數(例如1 XXXX爲搜索字詞)。我應該說我是perl新手。perl中兩個不同單詞/字符串之間的網頁返回字符串

閱讀等後,這是我有,但它不會返回任何東西,我不知道爲什麼......任何人都可以給我一些指針。

use LWP::Simple; 

my $ua = new LWP::UserAgent; 
$ua->agent('Mozilla/5.0'); 

my $url=$ARGV[0]; 
my $req = HTTP::Request->new(GET => $url); 
my $res = $ua->request($req); 

$res->content; 

print "all done \n";  

while ($res ==~ /of about <b>([1234567890,]<\/b> +)/) { 
    print $res; 
} 
+1

您需要針對'$ res-> content'運行正則表達式,而不是響應對象。 –

+0

你沒有使用嚴格和警告,是嗎? – TLP

回答

3

行:

while ($res ==~ /of about <b>([1234567890,]<\/b> +)/) { 

有下列錯誤:

  • 雖然語句,會導致死循環,如果字符串匹配, 因爲...
  • .. 。正則表達式缺少全局選項/g,這將是無用的 ,因爲...
  • ...我想這場比賽只會發生一次。
  • [1234567890,]只會匹配一個字符,寫得更好 [0-9,]+。注意結尾處的加號以允許多個匹配。
  • ==~應該=~
  • $res大概應該是$res->content,像a'r在 評論說。
  • 您的捕獲組超出了</b>標記,我認爲這是 錯字?

此外,您打印出整個$res對象,當你可能只想打印數字。 更正確的版本:

if ($res->content =~ /of about <b>([0-9,]+)/) { print $1 } 
+0

+1:優秀的分析。 – Zaid

相關問題