在用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