Java Web爬蟲:ScrapingSpider
ScrapingSpider 是一個業余時間開發的,支持多線程,支持關鍵字過濾,支持正文內容智能識別的爬蟲。
爬蟲的核心實現在ScrapingSpider.Core程序集中。爬蟲類為Spider類,爬蟲的爬取邏輯,與頁面處理邏輯通過事件分離,兩個關鍵事件為AddUrlEvent和DataReceivedEvent。
示例代碼:
// 構造爬蟲,需要3個參數:爬蟲設置,實現了ILogger的日志記錄器,上次未執行完的爬取鏈接 Spider spider = new Spider(new Settings(), new EmptyLogger(), null); spider.AddUrlEvent += addUrlArgs => { // Url即將添加到隊列的事件處理 }; spider.DataReceivedEvent += receivedArgs => { // 頁面已經被抓取下來的事件,可在此處理頁面,例如頁面保存添加到數據庫 }; // 開始爬取 spider.Crawl();
ScrapingSpider示例代碼
-
具體的使用方法請參考ScrapingSpider項目的Program.cs類中的示例代碼。
-
示例代碼使用SqlServer數據庫存儲爬取信息,表結構與WebPage類對應,數據庫連接字符串請參考App.config。
-
采用log4net作為日志記錄組件。
Settings說明
-
Init Seeds: 初始Url地址,多個地址使用回車分開。
-
Regex Filter: 通過正則表達式過濾Url,多個正則使用回車隔開。
-
Keyword: 關鍵字,按照指定的關鍵字爬取,多個關鍵字使用回車分開。
-
Crawl Depth: 爬取深度,小于0表示不限
-
Escape Links: 要過濾的鏈接,如:.jpg|.rar|.exe
-
Keep Cookie: 抓取過程中是否保留Cookie
-
Lock Host: 是否鎖定Host,鎖定后,指抓取站點相關鏈接。
-
Limit Speed: 是否智能限速。
-
Threads: 線程數量,啟用多個線程有利于提高爬取效率。
-
Timeout: 超時時間,以毫秒為單位。
-
User Agent: http協議UserAgent設置。
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!