在用wget抓取數(shù)據(jù)的時(shí)候,有的時(shí)候需要用戶登錄才能進(jìn)行。這種情況下就需要時(shí)用cookie.
先看下面的代碼:
wget --load-cookies cookies.txt --save-cookies cookies.txt --keep-session-cookies -O output/login.html --post-data "username=NNNNNNNNNNN&password=MMMMMMMMMMM" http://www.xxxxxxxxxxxxxx.org/login
wget --load-cookies cookies.txt --save-cookies cookies.txt --keep-session-cookies -O output/directory-list.html "http://www.xxxxxxxxxxxxxxx.org/list?category=resturants&page=1"
第一個(gè)操作,就是先獲得一個(gè)cookie,用來(lái)登陸并保存此session,然后在后面的抓數(shù)據(jù)的過(guò)程中使用此session和cookie.
注意:
http://www.xxxxxxxxxxxxxx.org/login要換成對(duì)應(yīng)的登陸頁(yè)面的url
--post-data "username=NNNNNNNNNNN&password=MMMMMMMMMMM" post數(shù)據(jù)里面的參數(shù)要根據(jù)登陸頁(yè)面里面對(duì)應(yīng)的參數(shù)設(shè)定。
第二個(gè)操作,就是用上面的cookie去驗(yàn)證用戶,并取得一個(gè)有效的連接,進(jìn)而去取得數(shù)據(jù)。
--load-cookies 就是載入你上一個(gè)操作所取得的cookie.
在抓取數(shù)據(jù)的時(shí)候,我自己用了一個(gè)腳本,如下,以供參考:
get --load-cookies cookies.txt --save-cookies cookies.txt --keep-session-cookies -O login.html --post-data "username=xxxxxxxxxx&password=11111111111111111" http://www.mmmmmmmmmmmmmmmmmm.mmmmmmmmm/login
for i in {1..89}
do
for j in {1..20}
do
echo i=$i -- j=$j
echo "wget --load-cookies cookies.txt --save-cookies cookies.txt --keep-session-cookies -O $i-$j.html 'http://www.ccccccccccccccc.ccccccccccc/directory/resturant/list?keyword=&class=$i&page=$j'"
wget --no-dns-cache --no-cache --load-cookies cookies.txt --save-cookies cookies.txt --keep-session-cookies -O $i-$j.html "http://www.qqqqqqqqq.xxxxxxxxx/directory/bar/list?keyword=&class=$i&page=$j"
done
|----------------------------------------------------------------------------------------|
版權(quán)聲明 版權(quán)所有 @zhyiwww
引用請(qǐng)注明來(lái)源 http://m.tkk7.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2009-10-27 18:20
zhyiwww 閱讀(3984)
評(píng)論(0) 編輯 收藏 所屬分類:
linux