在用wget抓取數(shù)據(jù)的時候,有的時候需要用戶登錄才能進(jìn)行。這種情況下就需要時用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"
第一個操作,就是先獲得一個cookie,用來登陸并保存此session,然后在后面的抓數(shù)據(jù)的過程中使用此session和cookie.
注意:
http://www.xxxxxxxxxxxxxx.org/login要換成對應(yīng)的登陸頁面的url
--post-data "username=NNNNNNNNNNN&password=MMMMMMMMMMM" post數(shù)據(jù)里面的參數(shù)要根據(jù)登陸頁面里面對應(yīng)的參數(shù)設(shè)定。
第二個操作,就是用上面的cookie去驗(yàn)證用戶,并取得一個有效的連接,進(jìn)而去取得數(shù)據(jù)。
--load-cookies 就是載入你上一個操作所取得的cookie.
在抓取數(shù)據(jù)的時候,我自己用了一個腳本,如下,以供參考:
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
引用請注明來源 http://www.aygfsteel.com/zhyiwww
|----------------------------------------------------------------------------------------|
posted on 2009-10-27 18:20
zhyiwww 閱讀(3988)
評論(0) 編輯 收藏 所屬分類:
linux