Perl 板


LINE

最近用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://webptt.com/m.aspx?n=bbs/Perl/M.1422456977.A.8B1.html
1F:推 CindyLinz: 可以宣告額外變數 my(@date, @author); 然後把現在的 01/28 23:10
2F:→ CindyLinz: print FILE "$date1\n"; 改成 push @date, $date1; 01/28 23:10
3F:→ CindyLinz: 把 print FILE "$name\n"; 改成 push @author, $name; 01/28 23:10
4F:→ CindyLinz: 最後再放一個迴圈, for my $i (0..$#date) 01/28 23:11
5F:→ CindyLinz: 印 "$author[$i]\n" 到你要輸出的檔案裡面 01/28 23:12
6F:→ CindyLinz: 欸等等... date 沒有按照一定順序哄 XD 01/28 23:12
7F:→ CindyLinz: 那把 if ( $date1 lt $date2 ){..} 改成 01/28 23:13
8F:→ CindyLinz: push @date, $date1 lt $date2; 01/28 23:13
9F:→ CindyLinz: 最後的迴圈裡面用 print "$author[$i]\n"if($date[$i]) 01/28 23:13
問題已解決 感謝大大~ ※ 編輯: DJJERRY (140.124.42.128), 01/29/2015 14:10:21







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Soft_Job站內搜尋

TOP