日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计

發布時間:2023/12/4 asp.net 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一 ,為什么要造輪子

有興趣的同學可以去各大招聘網站看一下爬蟲工程師的要求,大多是JAVA,PYTHON甚至于還有NODEJS,C++,再或者在開源中國查詢C#的爬蟲,僅有幾個非常簡單或是幾年沒有更新的項目。從我看的一些文章來說,單純性能上.NET對比JAVA,PYTHON并沒有處于弱勢,另根據我多年的開發經驗大多爬蟲性能瓶頸在并發下載(網速)、IP池,因此我認為用C#寫一個爬蟲框架絕對是可行的,那么為什么我大.NET沒有一個強大的爬蟲框架呢?說真的我不知道,可能爬蟲框架核心上比較簡單而沒有被大牛看上,也可能.NET的開發人員沒有別的語言的開發人員勤奮,或是.NET的開源氛圍沒有別的語言高。隨著.NET開源消息的公布,我覺得是時候開發一個跨平臺,跨語言的爬蟲框架了。我不喜歡復雜的東西,總是覺得復雜的東西容易出問題,可能跟我個人能力有限,駕馭不了有關。所以設計DotnetSpider的時候是參考JAVA下一個輕量級爬蟲框架webmagic,但是肯定有我自己的理解和改進在內的。此文是系列介紹第一篇,后面陸續會介紹詳細用法及程序改動

另:個人代碼水平有限,如果寫得不好請大家指正海涵

二 ,框架設計

其實爬蟲的設計我覺得還是挺成熟的,大部分都會拿出下圖來說事,由于我是參考的webmagic,所以也少不得得貼上來給大家一看(圖片是直接從webmagic上拿的)

  • Scheduler:負責URL的調度,可以實現如Queue,?PriorityScheduler, RedisScheduler(可用于分布式)等等

  • Downloader:?負責下載HTML,可以實現如HttpDownloader, 瀏覽器的Downloader(WebDriver), FiddlerDownloader,本地文件Downloader等等

  • PageProcesser:?負責HTML解析及新的符合規則的URL解析,從上圖可以看到傳入Processer的是Page對象,里面包含了下載好的完整HTML或者JSON數據

  • Pipeline:?負責數據的存儲, 可以實現如MySql, MySqlFile,MSSQL,MongoDb等等

三 ,與別的爬蟲的差異

  • 使用JSON定義爬蟲,所以可以最終實現跨語言(不同語言只要寫一個JSON轉換的provider就好)

  • 由于使用JSON做解析,所以可以實現類中屬性是別的類的情況(僅限MongoDB, 關系型數據庫不好存這種數據)\

  • 自動建表

  • 有.NET CORE版本,因此可以跨平臺(已經在LINUX下運行大量任務了)

  • 有感于IP代理的不穩定性,因此代理模塊沒有細致測試使用,而是實現了另一種換IP手段(ADSL撥號)

  • 加入基本的數據驗證模塊

  • 四 ,最基本使用方法

    最基本的使用方法是不需要引用Extension, 引用Common, Core, JLog就好,然后需要你自己實現IPipeline和Processer


    ?

    五 ,高級使用方法


  • 定義一個實體類,并在類上加合適的Attribute以便知道你要如何解析數據

  • 定義一個SpiderContextBuilder類,在里面配置爬蟲名字,線程數,Scheduler,downloader等等

  • 在main中實類化你的爬蟲類,調用run方法



  • ?

    五 ,代碼地址

    https://github.com/zlzforever/DotnetSpider?望各位大佬加星:)

    ?

    六 ,有想參與的或疑問的請加群

    希望有更多的人參與進來把這個爬蟲做大做強

    477731655

    原文地址:http://www.cnblogs.com/modestmt/p/5480773.html


    .NET社區新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關注

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的[开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。