[問題]如何將兩筆爬蟲抓下來的資料併為一筆?
最近用Web::Scraper抓WIKI編輯紀錄的時間和編輯者 抓下來輸出的檔案像這樣:
20141121
20141115
20141030
20140928
Adam
Jack
Mary
Bill
每個編輯者對應到的日期順序一致(例如Adam對應到的日期就是20141121 Jack對應到的就
是20141115)我想讓輸出檔案變成以下這種形式:
20141121 Adam
20141115 Jack
20141030 Mary
20140928 Bill
還有一點就是我有設定一個截止日 例如我設20141101為截止日的話大於這個日期的時間
便不會列印(只列印20140928和20141030)但編輯者的部分還是全部都會列印
我想做的是大於截止日的編輯者也不要列印出來 請問一下要同時達到這兩件事該怎麼寫?
附上是我的程式碼:
use warnings;
use URI;
use Web::Scraper;
my @user;
my %ss=();
my $url = "http://ppt.cc/E84~";
my $worker = scraper {
process ".mw-changeslist-date", "editdate[]" => "TEXT"; #這裡是抓日期
};
my $worker2 = scraper {
process ".mw-userlink", "username[]" => "TEXT"; #這裡是抓編輯者
};
my $FILE;
open(FILE,">test7.txt");
my $result = $worker->scrape( URI->new($url) );
my $result2 = $worker2->scrape( URI->new($url) );
print "Starting...\n";
for my $changeslist ( @{ $result->{editdate} } ) { #以下開始一整段是將抓
my ($d, $m, $y)=$changeslist=~m|, (\d+) (\w+) (\d+)|; 到的日期轉換成數字比
大小
$ss{'January'}='01';
$ss{'February'}='02';
$ss{'March'}='03';
$ss{'April'}='04';
$ss{'May'}='05';
$ss{'June'}='06';
$ss{'July'}='07';
$ss{'August'}='08';
$ss{'September'}='09';
$ss{'October'}='10';
$ss{'November'}='11';
$ss{'December'}='12';
if ($d < 10 ) { $d="0$d";};
$date1=$y.$ss{$m}.$d;
$date2="20141126";
print "date1=$date1\n";
if ( $date1 lt $date2 ){
print FILE "$date1\n"; #印出比截止日小的日期
}
}
for my $userlink ( @{ $result2->{username} } ) {
my ($name)="$userlink";
print FILE "$name\n"; #印出抓到的編輯者
}
close (FILE)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.169.23.68
※ 文章網址: https://www.ptt.cc/bbs/Perl/M.1422456977.A.8B1.html
推
01/28 23:10, , 1F
01/28 23:10, 1F
→
01/28 23:10, , 2F
01/28 23:10, 2F
→
01/28 23:10, , 3F
01/28 23:10, 3F
→
01/28 23:11, , 4F
01/28 23:11, 4F
→
01/28 23:12, , 5F
01/28 23:12, 5F
→
01/28 23:12, , 6F
01/28 23:12, 6F
→
01/28 23:13, , 7F
01/28 23:13, 7F
→
01/28 23:13, , 8F
01/28 23:13, 8F
→
01/28 23:13, , 9F
01/28 23:13, 9F
問題已解決 感謝大大~
※ 編輯: DJJERRY (140.124.42.128), 01/29/2015 14:10:21
Perl 近期熱門文章
PTT數位生活區 即時熱門文章
10
17