資源簡介
一個簡單的java網絡蜘蛛程序,非常適合初學者

代碼片段和文件信息
package?spider;
import?java.util.ArrayList;
import?java.util.linkedList;
import?java.util.List;
import?java.util.Queue;
public?class?Spider?{
private?UrlGraphNode?root?=?new?UrlGraphNode();//?以圖的先寬遍歷方式遍歷網絡
private?List?history?=?new?ArrayList();//?歷史記錄,記錄訪問了哪些網頁
public?Spider()?{
this.root.setUrl(““);
this.root.setLevel(-1);
List?ori?=?new?ArrayList();
ori.add(“http://www.163.com“);
ori.add(“http://www.qq.com“);//?以兩大門戶網站為起點開始遍歷
this.root.setLinjie(ori);?//?設置初始網頁集
}
//爬取函數:蜘蛛會帶著關鍵詞key寬先遍歷互聯網
public?void?claw(String?key)?{
Queue?queue?=?new?linkedList();//?利用隊列對圖進行先寬遍歷
WebsiteReader?wsr?=?new?WebsiteReader();
queue.add(root);//?原始網頁集入隊?開始遍歷
while?(!queue.isEmpty())?{
UrlGraphNode?t?=?queue.remove();//隊頭結點出隊
//門戶網站鏈接太多,所以只做兩層寬先遍歷
if?(t.getLevel()?2)?{
for?(int?i?=?0;?i? UrlGraphNode?wait?=?new?UrlGraphNode();
boolean?notVisited?=?true;
for?(int?j?=?0;?j? //檢查隊頭的鄰接節點(隊頭結點中的鏈接指向的網頁),如果在歷史記錄中出現過
//就不再入隊
if?(t.getLinjie().get(i).equals(history.get(j)))?{
notVisited?=?false;
break;
}
}
//隊頭結點的鄰接結點,也就是該url對應的網頁對外鏈接所指的網頁如果沒有被訪問過,就入隊
//下面這個判斷是指:第0層是門戶網站(初始網頁集),無條件進隊列
//第一層和第二層的網頁,如果未被爬取(打印)過,且title中含有key關鍵字,則可入隊
//本來不論title中是否含有key關鍵字,只要未記錄過,就應該入隊,但這樣要運行很久
//為了節約時間,只讓含關鍵字的網頁入隊
if?(notVisited?
&&?(t.getLevel()?0?||?
(t.getLevel()?>=?0?&&?null?!=?wsr.gettitle(t.getLinjie().get(i)?key)?
????&&?!(wsr.gettitle(t.getLinjie().get(i)?key)).equals(““))))?{
System.out.println(wsr.gettitle(t.getLinjie().get(i)key));//打印爬取結果(下一層的url和title)
history.add(t.getLinjie().get(i));//打印過的爬取結果馬上錄入歷史記錄
wait.setUrl(t.getLinjie().get(i));//獲取鄰接點的url
wait.setLinjie(wsr.getItslinks(t.getLinjie().get(i)));//獲取該鄰接點網頁中的鏈接
wait.setLevel(t.getLevel()?+?1);//設置層數
queue.add(wait);
}
}
}
}
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????634??2013-04-16?11:39??spiderCode\MotianchiSpider\.classpath
?????文件????????391??2013-04-16?11:12??spiderCode\MotianchiSpider\.project
?????文件????????629??2013-04-16?11:12??spiderCode\MotianchiSpider\.settings\org.eclipse.jdt.core.prefs
?????文件???????2284??2013-04-17?01:21??spiderCode\MotianchiSpider\bin\spider\Spider.class
?????文件????????505??2013-04-17?00:30??spiderCode\MotianchiSpider\bin\spider\Test.class
?????文件???????1233??2013-04-17?00:26??spiderCode\MotianchiSpider\bin\spider\UrlGraphNode.class
?????文件???????3925??2013-04-17?00:44??spiderCode\MotianchiSpider\bin\spider\WebsiteReader.class
?????文件??????67095??2013-04-16?11:38??spiderCode\MotianchiSpider\lib\filterbuilder.jar
?????文件??????70021??2013-04-16?11:38??spiderCode\MotianchiSpider\lib\htmllexer.jar
?????文件?????288098??2013-04-16?11:38??spiderCode\MotianchiSpider\lib\htmlparser.jar
?????文件?????121070??2013-04-16?11:38??spiderCode\MotianchiSpider\lib\junit.jar
?????文件??????35979??2013-04-16?11:38??spiderCode\MotianchiSpider\lib\sax2.jar
?????文件??????33277??2013-04-16?11:38??spiderCode\MotianchiSpider\lib\thumbelina.jar
?????文件???????2795??2013-04-17?01:21??spiderCode\MotianchiSpider\src\spider\Spider.java
?????文件????????208??2013-04-17?00:30??spiderCode\MotianchiSpider\src\spider\Test.java
?????文件????????749??2013-04-17?00:26??spiderCode\MotianchiSpider\src\spider\UrlGraphNode.java
?????文件???????3731??2013-04-17?00:44??spiderCode\MotianchiSpider\src\spider\WebsiteReader.java
?????文件??????31403??2013-04-17?01:06??spiderCode\搜索結果.txt
?????目錄??????????0??2013-04-17?01:33??spiderCode\MotianchiSpider\bin\spider
?????目錄??????????0??2013-04-17?01:33??spiderCode\MotianchiSpider\src\spider
?????目錄??????????0??2013-04-17?01:33??spiderCode\MotianchiSpider\.settings
?????目錄??????????0??2013-04-17?01:33??spiderCode\MotianchiSpider\bin
?????目錄??????????0??2013-04-17?01:33??spiderCode\MotianchiSpider\lib
?????目錄??????????0??2013-04-17?01:33??spiderCode\MotianchiSpider\src
?????目錄??????????0??2013-04-17?01:33??spiderCode\MotianchiSpider
?????目錄??????????0??2013-04-17?01:34??spiderCode
-----------?---------??----------?-----??----
???????????????664027????????????????????26
- 上一篇:JAVA2實用教程第5版課后習題電子版
- 下一篇:網絡游魚 多媒體展示系統
評論
共有 條評論