沒有爬蟲就沒有互聯網!
爬蟲的意義在於採集大批量數據,然後基於此進行加工/分析,做更有意義的事情。谷歌,百度,今日頭條,天眼查都離不開爬蟲。
去開源中國和Github查詢C#的爬蟲項目,僅有幾個非常簡單或是幾年沒有更新的項目。
而單純性能上.NET對比JAVA,PYTHON並沒有處於弱勢,反而有開發上的優勢(得益於世界上最強大的IDE)。爬蟲性能瓶頸大多是在併發下載(網速)、IP池,那麼爲什麼.NET沒有一個強大的爬蟲框架呢?
說真的我不知道,可能爬蟲框架核心上比較簡單,也可能.NET的開發人員沒有別的語言的開發人員勤奮,或是.NET的開源氛圍沒有別的語言高。
所以,今天推薦一個.NET 爬蟲的開源項目:DotnetSpider
開源項目地址:
https://github.com/dotnetcore/DotnetSpider
免責申明:本框架如同 Python 下著名的 Scrapy 一樣只是爲了幫助開發人員簡化開發流程、提高開發效率,請勿使用此框架做任何違法國家法律的事情。使用者所做任何事情也與本框架的作者無關。
設計圖
框架設計
參考的webmagic,所以整體架構上沒有什麼大的變化,設計圖如下(圖片是直接從webmagic上拿的)
-
Scheduler:負責URL的調度、去重,可以實現如Queue, PriorityQueueScheduler, RedisScheduler(可用於分佈式)等等 -
Downloader: 負責下載HTML,可以實現如HttpDownloader, 瀏覽器的Downloader(WebDriver), FiddlerDownloader,本地文件Downloader等等 -
PageProcesser: 負責HTML解析、目標URL的選擇 -
Pipeline: 負責數據的存儲, 已實現文件存儲, MySql存儲, MySqlFile存儲(腳本),MSSQL存儲,MongoDb存儲, 更多存儲期待您的貢獻
優點
-
可以使用Json定義爬蟲 -
可以使用實體類+Attrbiute定義爬蟲 -
自動創建數據庫、數據表 -
支持 .NET CORE,可以跨平臺 -
支持ADSL撥號換IP:如果所有爬蟲統一部署, 可以實現單臺機器同時運行多個任務撥號互不影響、或者一個路由下面多個電腦下多個任務撥號互不影響 -
支持自定義代理池 -
有管理平臺
本文分享自微信公衆號 - 一線碼農聊技術(dotnetfly)。
如有侵權,請聯繫 [email protected] 刪除。
本文參與“OSC源創計劃”,歡迎正在閱讀的你也加入,一起分享。