資源簡介
自己動手寫網絡爬蟲PDF+源碼.zip
代碼片段和文件信息
import?java.io.DataOutputStream;
import?java.io.File;
import?java.io.FileOutputStream;
import?java.io.IOException;
import?org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import?org.apache.commons.httpclient.HttpClient;
import?org.apache.commons.httpclient.HttpException;
import?org.apache.commons.httpclient.HttpStatus;
import?org.apache.commons.httpclient.methods.GetMethod;
import?org.apache.commons.httpclient.params.HttpMethodParams;
public?class?DownLoadFile?{
/**
?*?根據?url?和網頁類型生成需要保存的網頁的文件名?去除掉?url?中非文件名字符
?*/
public??String?getFileNameByUrl(String?urlString?contentType)
{
//remove?http://
url=url.substring(7);
//text/html類型
if(contentType.indexOf(“html“)!=-1)
{
url=?url.replaceAll(“[\\?/:*|<>\“]“?“_“)+“.html“;
return?url;
}
//如application/pdf類型
else
{
??????????return?url.replaceAll(“[\\?/:*|<>\“]“?“_“)+“.“+
??????????contentType.substring(contentType.lastIndexOf(“/“)+1);
}
}
/**
?*?保存網頁字節數組到本地文件?filePath?為要保存的文件的相對地址
?*/
private?void?saveToLocal(byte[]?data?String?filePath)?{
try?{
DataOutputStream?out?=?new?DataOutputStream(new?FileOutputStream(
new?File(filePath)));
for?(int?i?=?0;?i? out.write(data[i]);
out.flush();
out.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
/*?下載?url?指向的網頁?*/
public?String?downloadFile(String?url)?{
String?filePath?=?null;
/*?1.生成?HttpClinet?對象并設置參數?*/
HttpClient?httpClient?=?new?HttpClient();
//?設置?Http?連接超時?5s
httpClient.getHttpConnectionManager().getParams().setConnectionTimeout(
5000);
/*?2.生成?GetMethod?對象并設置參數?*/
GetMethod?getMethod?=?new?GetMethod(url);
//?設置?get?請求超時?5s
getMethod.getParams().setParameter(HttpMethodParams.SO_TIMEOUT?5000);
//?設置請求重試處理
getMethod.getParams().setParameter(HttpMethodParams.RETRY_HANDLER
new?DefaultHttpMethodRetryHandler());
/*?3.執行?HTTP?GET?請求?*/
try?{
int?statusCode?=?httpClient.executeMethod(getMethod);
//?判斷訪問的狀態碼
if?(statusCode?!=?HttpStatus.SC_OK)?{
System.err.println(“Method?failed:?“
+?getMethod.getStatusLine());
filePath?=?null;
}
/*?4.處理?HTTP?響應內容?*/
byte[]?responseBody?=?getMethod.getResponseBody();//?讀取為字節數組
//?根據網頁?url?生成保存時的文件名
filePath?=?“temp\\“
+?getFileNameByUrl(url?getMethod.getResponseHeader(
“Content-Type“).getValue());
saveToLocal(responseBody?filePath);
}?catch?(HttpException?e)?{
//?發生致命的異常,可能是協議不對或者返回的內容有問題
System.out.println(“Please?check?your?provided?http?address!“);
e.printStackTrace();
}?catch?(IOException?e)?{
//?發生網絡異常
e.printStackTrace();
}?finally?{
//?釋放連接
getMethod.releaseConnection();
}
return?filePath;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2014-11-04?15:25??自己動手寫網絡爬蟲PDF+源碼\
?????文件?????????963??2012-02-23?22:08??自己動手寫網絡爬蟲PDF+源碼\VC驛站.txt
?????文件?????????120??2009-10-15?21:58??自己動手寫網絡爬蟲PDF+源碼\VC驛站.url
?????文件?????????338??2014-10-12?12:42??自己動手寫網絡爬蟲PDF+源碼\Vip會員.txt
?????文件?????????127??2014-10-12?12:38??自己動手寫網絡爬蟲PDF+源碼\Vip課程目錄.url
?????文件?????????131??2012-04-19?23:30??自己動手寫網絡爬蟲PDF+源碼\原創作品投稿.url
?????目錄???????????0??2014-11-04?15:24??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\
?????目錄???????????0??2014-03-19?10:17??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\
?????文件????????2984??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\DownLoadFile.java
?????文件????????1975??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\HtmlParserTool.java
?????文件??????????77??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\li
?????文件????????1157??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\li
?????文件????????1488??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\MyCrawler.java
?????文件?????????562??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\Queue.java
?????文件??????????79??2010-06-28?13:40??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\readme.txt
?????文件????????2672??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\RetrivePage.java
?????文件????????3080??2010-06-28?07:30??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap01\Url.java
?????目錄???????????0??2014-03-19?10:17??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap02\
?????文件????????1292??2010-06-28?13:34??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap02\ConsistentHash.java
?????文件?????????535??2010-06-28?13:35??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap02\DataReadByURL.java
?????文件??????????71??2010-06-28?13:42??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap02\readme.txt
?????文件????????4292??2010-06-28?13:35??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap02\WordCount.java
?????目錄???????????0??2014-03-19?10:17??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\
?????目錄???????????0??2014-03-19?10:17??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\ip\
?????文件?????????586??2010-06-28?07:32??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\IP.java
?????文件?????????359??2010-06-28?07:33??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\ip\IPEntry.java
?????文件?????????799??2010-06-28?07:33??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\ip\IPLocation.java
?????文件???????16557??2010-06-28?07:34??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\ip\IPSeeker.java
?????文件?????????337??2010-06-28?07:34??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\ip\IPTest.java
?????文件?????????449??2010-06-28?07:34??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\ip\LogFactory.java
?????文件?????????156??2010-06-28?07:34??自己動手寫網絡爬蟲PDF+源碼\完整版源碼共10章\Chap03\ip\Message.java
............此處省略2241個文件信息
評論
共有 條評論