在用wget抓取數據的時候,有的時候須要用戶登陸才能進行。這種狀況下就須要時用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,而後在後面的抓數據的過程當中使用此session和cookie.
注意:
http://www.xxxxxxxxxxxxxx.org/login要換成對應的登錄頁面的url
--post-data "username=NNNNNNNNNNN&password=MMMMMMMMMMM" post數據裏面的參數要根據登錄頁面裏面對應的參數設定。
第二個操做,就是用上面的cookie去驗證用戶,並取得一個有效的鏈接,進而去取得數據。
--load-cookies 就是載入你上一個操做所取得的cookie.
在抓取數據的時候,我本身用了一個腳本,以下,以供參考:
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"
donehtml