利用wget全量爬取列代表細10萬條

一、生成下載分頁列表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能快速剪切到指定目錄;

相關文章
相關標籤/搜索