- 作者:鄒祁峯
- 郵箱:[email protected]
- 博客:http://blog.csdn.net/qifengzou
- 日期:2015.02.06
- 轉載請註明來自"祁峯"的CSDN博客
1 引言
在互聯網上可找到很多關於爬蟲系統的設計和實現的相關文檔,但仔細閱讀後可發現絕大多數的設計方案的可用性、可靠性、高效性、擴展性等方面均存在很多問題。
針對以上問題的存在,本設計方案將以可用性、可靠性、高效性、擴展性爲基本準則重新設計爬蟲系統。
2 處理時序
圖1 爬蟲系統時序圖
流程描述如下:
①、網頁分析器:負責從已下載的網頁中提取HREF字段,並判斷該HREF是否已經爬取。如果已經爬取,則直接丟棄;如果未爬取,則將該URL推送到REDIS隊列。
②、任務調度:負責從REDIS隊列中取出URL信息,並對URL進行解析處理,提取域名等信息,並根據域名進行DNS查詢,找到對應的IP地址,再將URL-IP對應信息放入工作隊列。爲了提高效率,可以在此建一張域名IP映射表,避免重複的DNS查詢處理。如果查詢的是不存在的域名,建表可有效的防止線程的反覆阻塞。
③、工作線程:負責從工作隊列取出URL, 並將對應網頁爬取到本地磁盤。在此可以採用非阻塞+IO多路複用技術,可以併發爬取大量網頁。
④、可配置性:可通過修改配置文件,來控制系統的運行行爲。其中包括配置線程數目、過濾策略、隊列屬性、輸入輸出路徑、表空間大小等等。