HOME 生活记录运维/编程
作者/来源:yixinu.com
栏目:运维/编程
日期:2014-07-24 03:34:33

wget -r -p -k --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" -e robots=off http://1532911031.scd.wezhan.cn/


wget加上参数之后,即可成为相当强大的下载工具。

wget -r -p -np -k http://xxx.com/abc/

-r, --recursive(递归) specify recursive download.(指定递归下载)

-k, --convert-links(转换链接) make links in downloaded HTML point to local files.(将下载的HTML页面中的链接转换为相对链接即本地链接)

-p, --page-requisites(页面必需元素) get all images, etc. needed to display HTML page.(下载所有的图片等页面显示所需的内容)

-np, --no-parent(不追溯至父级) don't ascend to the parent directory.

另外断点续传用-nc参数 日志 用-o参数

-e robots=off   绕过robots.txt限制

--user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3"

加入浏览器的头






linux下可以用wget下载整个网站,而且网站链接中包含utf-8编码的中文也能正确处理。

简要方法记录如下:
wget --restrict-file-name=ascii -m -c -nv -np -k -E -p -R=exe,zip http://www.xxx.com
参数释义如下:
--restrict-file-name=ascii ,将文件名保存为ASCII格式。这样能避免utf-8文件名带来的麻烦(注:1.12版才支持ascii参数值)
-m 整站下载,mirror的缩写,是-N -r -l inf --no-remove-listing 这几个参数的快捷方式,具体详阅各自的说明
-c 续传
-nv 不显示详细的下载详情
-np don’t ascend to the parent directory.即下载的Web页面不越过后面指定的 http://www.xxx.com的范围。当然,如果你指定的是 http://www.xxx.com/aaa,则所有的web页面都要在 http://www.xxx.com/aaa下
-k 下载完成后,将页面文件中的链接转换为本地链接,便于离线浏览和制作chm等
-E 保存html/css文件时,使用合适的文件后缀。例如,在某些网站有些文件是服务器端动态生成的,虽然是css文件,但后缀并不是css,-E选项可以调整之
-p -np对页面文件做了限制,如果不加-p,则html所需的媒体文件也会受限于-np,-p则会下载html/css文件所需的所有媒体文件(图片、音频、视频等)
-R 拒绝下载的文件后缀列表,逗号分隔





wget -r -p -np -k -m -E -H -D 'fkfz32.faisco.cn,0.ss.faidns.com' -A 'html,css,jsp,php' http://fkfz32.faisco.cn

for i in `cat /tmp/list`; do cat $i | gunzip > /tmp/1; cat /tmp/1 > $i; done




wget -r -p -np -k -m -E --execute robots=off -H -D 'as27.aifuns.net' -A 'html,css,js,jpg,png,gif,jsp,php' http://as27.aifuns.net



整站下载:

绕开robots.txt

wget -r -p -k --user-agent="Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.3) Gecko/2008092416 Firefox/3.0.3" -e robots=off http://1532911031.scd.wezhan.cn/



利用wget 抓取 网站网页 包括css背景图片



wget是一款非常优秀的http/ftp下载工具,它功能强大,而且几乎所有的unix系统上都有。不过用它来dump比较现代的网站会有一个问题:不支持css文件,它不会自动下载、重新链接css中所指定的图片。这个问题导致的最常见的后果是dump下来的网站看不到背景图片。本文所介绍的这个脚本主要就是用来解决这个缺陷的。

这里简要介绍一下这个脚本的细节:

  • 第3行用于设置要下载的网站的地址。
  • 第10行用于将文件名转换为windows兼容的格式。windows对文件名格式的要求比unix更为苛刻一点,这里指定为windows也可以兼容unix系统。总的来说,wget的这个功能稍微弱了一点,面对一些更苛刻的系统就没有办法了。
  • 第13行用于忽略robots.txt。很多网站的css、js文件都是在robots.txt中被定义为spider不可访问的。
  • 第15、16行用于忽略某些目录和文件。因为没有了robots.txt的限制,wget可能会去访问一些不需要的东西。这里可以根据具体情况做限制。
  • 第19~24行下载css中链接的文件。
  • 第26~29行修正css中的链接。
以下是这个脚本的内容




#!/bin/sh  
  
ADDR="http://www.EXAMPLE.com/"  
  
SERVER=${ADDR#http://}  
SERVER=${SERVER%%/*}  
  
wget /  
    --html-extension /  
    --restrict-file-names=windows /  
    --convert-links /  
    --page-requisites /  
    --execute robots=off /  
    --mirror /  
    --exclude-directories /comment/reply/,/aggregator/,/user/ /  
    --reject "aggregator*" /  
    "$ADDR"  
  
find $SERVER -type f -name "*.css" -exec cat {} /; |  
grep -o 'url(/[^)]*)' |  
sort |   
uniq |  
sed 's/^url(/(.*/))$/http:////'$SERVER'/1/' |  
wget --mirror --page-requisites -i -  
  
for i in `find $SERVER -type f -name "*.css"`; do  
    PREFIX="$(echo $i | sed 's/[^//]*//g; s///$//; s////../////g')"  
    sed -i 's/url(///url('$PREFIX'/g' $i  
done



分享到:

Copyright © 2013-2014 yixinu.com 湘ICP备14004402号

QQ:316686606  Email: 316686606@qq.com