我剛剛製作了一個腳本來抓取網站上的鏈接,並將它們保存到一個文本文件中。如何使用Perl從網站下載鏈接目標?
現在我的工作在我的正則表達式,因此會抓住它包含php?dl=
在URL從文本文件鏈接:
如:www.example.com/site/admin/a_files.php?dl=33931
它幾乎地址,當你將鼠標懸停在你網站上的dl
按鈕。從中可以點擊下載或「右鍵單擊保存」。
我只是想知道如何實現這一點,不得不下載給定的地址,將下載一個*.txt
文件的內容。全部來自劇本。
我剛剛製作了一個腳本來抓取網站上的鏈接,並將它們保存到一個文本文件中。如何使用Perl從網站下載鏈接目標?
現在我的工作在我的正則表達式,因此會抓住它包含php?dl=
在URL從文本文件鏈接:
如:www.example.com/site/admin/a_files.php?dl=33931
它幾乎地址,當你將鼠標懸停在你網站上的dl
按鈕。從中可以點擊下載或「右鍵單擊保存」。
我只是想知道如何實現這一點,不得不下載給定的地址,將下載一個*.txt
文件的內容。全部來自劇本。
讓WWW::Mechanize
你最好的朋友。
這裏的原因:
/php\?dl=/
)匹配特定的正則表達式是網頁上的鏈接follow_link
方法遵循這些鏈接get
的這些鏈接的目標並將其保存到文件中所有這些都不需要將您想要的鏈接保存在中間文件中!生活的甜蜜,當你擁有了合適的工具...
例
use strict;
use warnings;
use WWW::Mechanize;
my $url = 'http://www.example.com/';
my $mech = WWW::Mechanize->new();
$mech->get ($url);
my @linksOfInterest = $mech->find_all_links (text_regex => qr/php\?dl=/);
my $fileNumber++;
foreach my $link (@linksOfInterest) {
$mech->get ($link, ':contentfile' => "file".($fileNumber++).".txt");
$mech->back();
}
您可以LWP::UserAgent下載文件:
my $ua = LWP::UserAgent->new();
my $response = $ua->get($url, ':content_file' => 'file.txt');
,或者您需要文件句柄:
open my $fh, '<', $response->content_ref or die $!;
ahhh ic,這就是你如何使用它。感謝:D – eraldcoil 2010-07-06 12:04:59
或者,只需使用'LWP :: Simple :: getstore($ url,$ file)'。 – 2010-07-06 12:37:35
老問題,但是當我做快速腳本時,我經常使用「wget」或「curl」和管道。這可能不是跨系統可移植的,但是如果我知道我的系統具有這些命令中的一個或另一個,則它通常很好。
例如:
#! /usr/bin/env perl
use strict;
open my $fp, "curl http://www.example.com/ |";
while (<$fp>) {
print;
}
什麼是這裏的問題?你做了一個腳本,現在只想下載某些URL?你在尋找一個正則表達式嗎? – Konerak 2010-07-06 11:39:21
我想弄清楚如何下載與url相關的文件。 例如,在網站上點擊'dl'圖標/按鈕,瀏覽器會自動爲您下載文件。 ie:http://www.example.com/site/admin/a_files.php?dl=33931將下載「file1.txt」 我只是想知道如何以Perl下載文件。正則表達式部分不是問題。 還是我錯過了一個可以輕鬆完成這一切的功能haha – eraldcoil 2010-07-06 11:44:55