Java Web爬蟲:ScrapingSpider

jopen 9年前發布 | 21K 次閱讀 網絡爬蟲 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設置。

項目主頁:http://www.baiduhome.net/lib/view/home/1421647501140

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!