自己寫了那麼多篇文章,想備份自己的pixnet的文章連結,網站上好像又沒有提供這樣的功能,於是自己搞一個,用perl寫的。

抓取單一頁面裡的連結
部落格裡有提供「列出全部文章」,如blog.pixnet.net/admin/listall/1會列出admin這個使用者的部份文章,利用perl提供的LWP及HTML::TreeBuilder模組來完成工作。

use LWP;
use HTML::TreeBuilder;

my $ua=LWP::UserAgent->new;
my $url='http://blog.pixnet.net/admin/listall/1';
my $res=$ua->get($url);
die "Can't get $url ", $res->status_line unless $res->is_success;
my $html=$res->content;
my $root=HTML::TreeBuilder->new_from_content($html);
my @links=$root->look_down(
_tag=>'a',
href=>qr{http:\/\/blog\.pixnet\.net\/admin\/post\/\d{7}$}x
);
for($j=0; $j<=$#links; $j++){
print $links[$j]->attr('href'),' ', $links[$j]->as_trimmed_text, "\n";
}
$root->delete;

抓取多個頁面裡的連結
同樣的道理,只是列出想要抓的頁面改用陣列來存放。怕文章連結會重覆,放個hash來處理。

use LWP;
use HTML::TreeBuilder;

my %hash;
my $ua=LWP::UserAgent->new;
my @url=(
'http://blog.pixnet.net/admin/listall/9',
'http://blog.pixnet.net/admin/listall/8',
'http://blog.pixnet.net/admin/listall/7',
'http://blog.pixnet.net/admin/listall/6',
'http://blog.pixnet.net/admin/listall/5',
'http://blog.pixnet.net/admin/listall/4',
'http://blog.pixnet.net/admin/listall/3',
'http://blog.pixnet.net/admin/listall/2',
'http://blog.pixnet.net/admin/listall/1',
);

for($i=0; $i<=$#url; $i++){
my $url=$url[$i];
my $res=$ua->get($url);

die "Can't get $url ", $res->status_line unless $res->is_success;

my $html=$res->content;
my $root=HTML::TreeBuilder->new_from_content($html);
my @links=$root->look_down(
_tag=>'a',
href=>qr{http:\/\/blog\.pixnet\.net\/admin\/post\/\d{7}$}x
);
for($j=0; $j<=$#links; $j++){
$hash{$links[$j]->attr('href')}=$links[$j]->as_trimmed_text;
}
$root->delete;
}

foreach $item(sort keys %hash){
print $item, ' ', $hash{$item}, "\n";
}

改進空間
當然listall的頁面可能會越來越多,到時只要一直加下去即可,也許可考慮用迴圈的方法來改善。

結果顯示
這是抓了admin 10個頁面的結果,看來還不賴 :)
http://blog.pixnet.net/admin/post/1014741 [公告] 新增相簿上傳系統承載警示
http://blog.pixnet.net/admin/post/1015226 [公告] 部落格 我的蒐藏 功能完成!
http://blog.pixnet.net/admin/post/1023003 [公告] 新增部落格縮圖機制
http://blog.pixnet.net/admin/post/1024039 [活動] 武林秘笈入圍名單
http://blog.pixnet.net/admin/post/1038332 [公告] 註冊資訊顯示介面更動
http://blog.pixnet.net/admin/post/1054021 [公告] 新增 自訂相簿資料夾 功能
http://blog.pixnet.net/admin/post/1070366 [公告] 新增 相簿批次管理 功能
http://blog.pixnet.net/admin/post/1094793 [好康] 讓你的朋友也可以是VIP喔!
http://blog.pixnet.net/admin/post/1111021 [公告] Blog新增 同分類閱讀 及 歷史上的今天
http://blog.pixnet.net/admin/post/1131230 [公告] 關於部分使用者樣式出不來
http://blog.pixnet.net/admin/post/1157641 關於樣式抄襲相關事件
http://blog.pixnet.net/admin/post/1172343 [公告] 修正上傳圖片的屬性設定位置
http://blog.pixnet.net/admin/post/1178269 [公告] 新增 相簿資料夾封面設定
http://blog.pixnet.net/admin/post/1217682 [公告] 部落格後台加寬工程完成
http://blog.pixnet.net/admin/post/1235101 [公告] 新增 RSS 禁止訂閱功能
http://blog.pixnet.net/admin/post/1288166 [公告] 部落格發表迴響CSS
http://blog.pixnet.net/admin/post/1288418 [活動] PIXNET異國風情 義式風
http://blog.pixnet.net/admin/post/1289868 [公告] 新增部落格站內文章同步
http://blog.pixnet.net/admin/post/1317621 PIXNET 管理團隊報告 (12/14)
http://blog.pixnet.net/admin/post/1456917 [公告] 新增同步樂多以及更新文章列表功能
http://blog.pixnet.net/admin/post/1457113 [公告] 新增誰來我家功能
http://blog.pixnet.net/admin/post/1461030 [公告] 無名VIP免費兌換PIXNET VIP
http://blog.pixnet.net/admin/post/1481793 [活動] 義大利料理徵文活動佳作名單公佈 (4:37修正)
http://blog.pixnet.net/admin/post/1513345 [公告] 12/22(五)停機公告
http://blog.pixnet.net/admin/post/1531091 [活動] 義大利料理徵文得獎名單(後續)
http://blog.pixnet.net/admin/post/1680010 [公告] 購買VIP邀請函截止日期延後
http://blog.pixnet.net/admin/post/1728219 [公告] 天空部落格搬家程式測試中
http://blog.pixnet.net/admin/post/1733629 [公告] 部落格RSS訂閱功能開放測試
http://blog.pixnet.net/admin/post/1769700 關於今早5點到9點的停機事件
http://blog.pixnet.net/admin/post/1770479 [公告] 今天早上停機事件補償
http://blog.pixnet.net/admin/post/1987873 [公告] 新增更改相簿狀態
http://blog.pixnet.net/admin/post/2018191 [公告] 系統軟體升級, 機器重開機
http://blog.pixnet.net/admin/post/2134121 [公告] 關於剛剛發生的暫時連不到pixnet情況說明
http://blog.pixnet.net/admin/post/2233439 [公告] 今天凌晨暫時停機增加硬體設備
http://blog.pixnet.net/admin/post/2268119 [公告] 新版名片頁搶先觀看
http://blog.pixnet.net/admin/post/2291185 [公告] 留言匯入程式更新
http://blog.pixnet.net/admin/post/2291688 [公告] 剛剛發生的blog停機維修事件報告
http://blog.pixnet.net/admin/post/2327993 關於近期無法無名同步/搬家成功的原因說明
http://blog.pixnet.net/admin/post/2352967 [公告] 和大家報告最近PIXNET維修的情況
http://blog.pixnet.net/admin/post/2471347 [公告] 2/8(四) 凌晨2:00停機
http://blog.pixnet.net/admin/post/2482108 [公告] 伺服器安裝進度報告
http://blog.pixnet.net/admin/post/2499471 [公告] 最近這幾天晚上部落格很慢的原因
http://blog.pixnet.net/admin/post/2560232 [公告] 相簿上傳功能暫停
http://blog.pixnet.net/admin/post/2592237 PIXNET!!! 你不要再無名了!
http://blog.pixnet.net/admin/post/2602688 [公告] 各家部落格測試搬家
http://blog.pixnet.net/admin/post/2779921 [公告] 春節期間注意事項
http://blog.pixnet.net/admin/post/3094664 [公告] 部落格暫時停機
http://blog.pixnet.net/admin/post/3235214 [活動] ?居家風格問卷,送你wii玩過癮
http://blog.pixnet.net/admin/post/3240566 站長far給使用者的一封信
http://blog.pixnet.net/admin/post/3251578 [公告] 部落格自動儲存功能更新
http://blog.pixnet.net/admin/post/3282964 [公告] 部落格RSS功能更新
http://blog.pixnet.net/admin/post/3284790 [公告] 誰來我家功能更新
http://blog.pixnet.net/admin/post/3293890 [公告] 3/16(五) 臨時停機
http://blog.pixnet.net/admin/post/3396512 [公告] PIXNET 中文名 -- 痞客邦
http://blog.pixnet.net/admin/post/3397303 [公告] 中文命名得獎名單
http://blog.pixnet.net/admin/post/3414688 [公告] 070321 管理團隊報告
http://blog.pixnet.net/admin/post/3453167 [公告] 居家生活調查問卷得獎名單
http://blog.pixnet.net/admin/post/3491775 [公告] 三多利活動進行方式
http://blog.pixnet.net/admin/post/3527202 [公告] 購買VIP通知開通的位置暫時更改
http://blog.pixnet.net/admin/post/3588915 [公告] 新版首頁搶先看
http://blog.pixnet.net/admin/post/3604500 [公告] 三多利最後的補充說明
http://blog.pixnet.net/admin/post/3647064 [公告] 部落格快速加入書籤
http://blog.pixnet.net/admin/post/3647258 [公告] 新增網誌分類
http://blog.pixnet.net/admin/post/3649485 [公告] 相簿排序修正
http://blog.pixnet.net/admin/post/3651191 [公告] 誠徵 PIXNET 網頁美術設計師
http://blog.pixnet.net/admin/post/3686536 [公告] 新光銀行部落格插旗得獎名單
http://blog.pixnet.net/admin/post/3800350 [公告] 相簿人氣維修中
http://blog.pixnet.net/admin/post/3832679 [公告] 關於相簿人氣有問題的使用者
http://blog.pixnet.net/admin/post/3840626 [公告] 新版首頁上線
http://blog.pixnet.net/admin/post/3841061 [活動] 慶改版 有創意你最發!
http://blog.pixnet.net/admin/post/3851153 [公告] 今天晚上當機說明
http://blog.pixnet.net/admin/post/3871600 [公告] 今天當機的原因
http://blog.pixnet.net/admin/post/3888014 [公告] 影音功能開放測試中
http://blog.pixnet.net/admin/post/3936245 [公告] 影音功能暫時停止上傳
http://blog.pixnet.net/admin/post/3984444 慶改版 有創意你最發!活動得獎名單
http://blog.pixnet.net/admin/post/3984512 [公告] 名片功能進度報告
http://blog.pixnet.net/admin/post/4025237 [誠徵] PIXNET 程式設計師
http://blog.pixnet.net/admin/post/4042223 [誠徵] PIXNET廣告業務和專案企劃
http://blog.pixnet.net/admin/post/4101383 [公告] 星期一凌晨2:00~早上6:00臨時停機
http://blog.pixnet.net/admin/post/4134183 [公告] VIP 補償
http://blog.pixnet.net/admin/post/4137347 [公告] 名片功能進度報告
http://blog.pixnet.net/admin/post/4160325 [公告] 新增網誌文章迴響回覆功能
http://blog.pixnet.net/admin/post/4191878 [公告] 目前台灣固網到Hinet線路不穩定
http://blog.pixnet.net/admin/post/4213110 [公告] 剛剛發生的短暫網路連線問題
http://blog.pixnet.net/admin/post/4231643 [公告] 關於"居家生活調查問卷得獎名單"後續
http://blog.pixnet.net/admin/post/4242657 [公告] 影音功能開放測試!
http://blog.pixnet.net/admin/post/4262108 [公告] 目前Hinet到台固線路有問題
http://blog.pixnet.net/admin/post/4277985 [公告] 關於這兩次線路不穩定的補償
http://blog.pixnet.net/admin/post/4309430 [公告] 名片功能進度報告
http://blog.pixnet.net/admin/post/4342471 [公告] 5/7(一) 全站停機
http://blog.pixnet.net/admin/post/4348292 [公告] 新增部落格小功能
http://blog.pixnet.net/admin/post/4376363 [公告] 無名小站人氣搬家功能完成
http://blog.pixnet.net/admin/post/4382644 [公告] 新增大量移動相片功能
http://blog.pixnet.net/admin/post/4386951 [公告] 部落格架構更改
http://blog.pixnet.net/admin/post/4451399 [公告] 目前網站現況
http://blog.pixnet.net/admin/post/4486353 [公告] 目前名片功能全面開放
http://blog.pixnet.net/admin/post/4493958 [公告] 影音功能目前開放給VIP先行使用
http://blog.pixnet.net/admin/post/4510794 [公告] 新增全站文章分類
http://blog.pixnet.net/admin/post/4516166 [公告] 5/11凌晨3:00~5:00停機兩個小時
http://blog.pixnet.net/admin/post/4527984 [公告] 樣式貢獻即將使用分類方式
http://blog.pixnet.net/admin/post/4529922 [活動] 尋找東京散步達人
http://blog.pixnet.net/admin/post/4570250 [公告] 首頁小修正
http://blog.pixnet.net/admin/post/4634750 [獨家] 演唱會門票 免費送!
http://blog.pixnet.net/admin/post/4638560 [獨家] 想和任賢齊一起泡澡嗎?

適用範圍
當然上面的程式只要略加修改就能抓其他網站頁面的連結,運用之妙,存乎一心 :)
創作者介紹

神鵰蝦

jck11 發表在 痞客邦 PIXNET 留言(2) 人氣()


留言列表 (2)

發表留言
  • changyang319
  • 之前從來沒接觸過Perl,看了神鵰蝦大大這篇後實際自己去Run了一次...這玩意真好用,腦海中不禁浮現出這玩意可以做的事了,感謝大大的教學。
  • 嗨 我也是初學者 倒是台灣出了很多perl的高手 很多CPAN裡的模組都是台灣人供獻的
    有啥好的想法說出來 大家一起研究吧 :)

    jck11 於 2007/05/27 15:40 回覆

  • gofin
  • 請問一下

    我依照您的方法!!利用activeperl在windows的cmd下執行
    基本上執行是可以成功的!!但是後面的中文會變亂碼
    請問有何解決方法!!感謝喔
  • 我的也是 可能是dos模式的問題 我也不清楚
    我都是導到一個檔案去 再去開檔來看 例如
    perl filename.pl > a.txt
    再用notepad等編輯器開a.txt來看

    jck11 於 2007/06/13 16:26 回覆

【 X 關閉 】

恭喜您是我們挑選到的讀者!希望能了解您的
【痞客邦部落格使用行為】

填問卷將有機會獲得痞客邦獨家好禮喔!(注意:關閉此視窗將不再出現。)

立即填寫取消