一、生成下载分页列表list.txthtml
1)没法指定分页大小,URL中带页数如p=3,page/1java
2)容许指定分页大小,max=100&offset=200,max表示一页显示几条数据,offset表示从第几条后开始显示服务器
经过excel很容易生成一个列表cookie
二、爬取列表页面网络
wget -b -t 3 -i list.txt --no-cookies,-b在后台抓取,-t重试3次并发
三、利用正则解析列代表细地址,经过EditPlus正则查找文件夹替换也能搞定,如下为java代码:app
File dir = new File("list"); File[] fs= dir.listFiles(); int len = -1; char[] cbuf = new char[10240]; for(File f : fs){ FileReader fr = new FileReader(f); StringBuilder sb = new StringBuilder(); while((len = fr.read(cbuf)) > -1){ sb.append(cbuf, 0, len); } fr.close(); Pattern p = Pattern.compile("/show/(\\S+?)\""); Matcher m = p.matcher(sb); while(m.find()){ System.out.println("http://www.h2do.com/" + m.group(1)); } }
四、根据网络和服务器容许并发线程数手工拆分文件,detail1.txt,detail2.txt,...,detailn.txtui
wget -b -t 3 -i detail1.txt命令行
wget -b -t 3 -i detail2.txt线程
...
wget -b -t 3 -i detailn.txt
不足之处,当服务器返回错误500(Internal Server Error)时wget没法配置重试,-t应该是IO异常时重试。
ren * *.html 下载文件缺乏扩展名,为所有文件添加扩展名;
move /Y * ../www 大量文件合并目录时,若是在资源管理器ctrl+x,ctrl+v须要一个统计重复文件个数并提示过程,直接命令行/Y能快速剪切到指定目录;