• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            loop_in_codes

            低調做技術__歡迎移步我的獨立博客 codemaro.com 微博 kevinlynx

            使用erlang實現P2P磁力搜索(開源)

            接上回對DHT網絡的研究,我用erlang克隆了一個磁力搜索引擎。我這個實現包含了完整的功能,DHT網絡的加入、infohash的接收、種子的獲取、資源信息的索引、搜索。

            如下圖:

            screenshot

            在我的筆記本上,我開啟了100個DHT節點,大致均勻地分布在DHT網絡里,資源索引速度大概在1小時一萬個左右(包含重復資源)。

            這個程序包含三大部分:

            這兩個項目總共包含大概2500行的erlang代碼。其中,DHT實現部分將DHT網絡的加入包裝成一個庫,爬蟲部分在搜索種子時,暫時沒有使用P2P里的種子下載方式,而是使用現成的磁力鏈轉種子的網站服務,這樣我只需要使用erlang自帶的HTTP客戶端就可以獲取種子信息。爬蟲在獲取到種子信息后,將數據存儲到mongodb里。WEB端我為了盡量少用第三方庫,我只好使用erlang自帶的HTTP服務器,因此網頁內容的創建沒有模板系統可用,只好通過字符串構建,編寫起來不太方便。

            使用

            整個程序依賴了兩個庫:bson-erlang和mongodb-erlang,但下載依賴庫的事都可以通過rebar解決,項目文件里我已經包含了rebar的執行程序。我僅在Windows7上測試過,但理論上在所有erlang支持的系統上都可以。

            • 下載安裝mongodb
            • 進入mongodb bin目錄啟動mongodb,數據庫目錄保存在db下,需手動建立該目錄

                mongod --dbpath db --setParameter textSearchEnabled=true
              
            • 下載erlang,我使用的是R16B版本

            • 下載dhtcrawler,不需要單獨下載kdht,待會下載依賴項的時候會自動下載

                git clone git@github.com:kevinlynx/dhtcrawler.git
              
            • cmd進入dhtcrawler目錄,下載依賴項前需保證環境變量里有git,例如D:\Program Files (x86)\Git\cmd,需注意不要將bash的目錄加入進來,使用以下命令下載依賴項

                rebar get-deps
              
            • 編譯

                rebar compile
              
            • 在dhtcrawler目錄下,啟動erlang

                erl -pa ebin
              
            • 在erlang shell里運行爬蟲,erlang語句以點號(.)作為結束

                crawler_app:start().
              
            • erlang shell里運行HTTP服務器

                crawler_http:start().
              
            • 瀏覽器里輸入localhost:8000/index.html,這個時候還沒有索引到資源,建議監視網絡流量以觀察爬蟲程序是否正確工作

            爬蟲程序啟動時會讀取priv/dhtcrawler.config配置文件,該文件里配置了DHT節點的UDP監聽端口、節點數量、數據庫地址等,可自行配置。

            接下來我會談談各部分的實現方法。

            posted on 2013-06-20 14:44 Kevin Lynx 閱讀(7836) 評論(9)  編輯 收藏 引用 所屬分類: networkerlang

            評論

            # re: 使用erlang實現P2P磁力搜索(開源) 2014-01-19 11:28 蘇堤

            因為不懂程序,請問有木有完成好的網頁源碼?  回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2014-03-18 22:46 磁力搜索

            歡迎體驗http://btbook.net/  回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2014-08-05 21:07 taojiaen

            rebar顯示 Dependency not available 是什么意思啊  回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2014-12-01 10:36 DHTSEEK

            www.dhtseek.com已經在用,謝謝  回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2014-12-04 20:46 于濤

            @磁力搜索
            @DHTSEEK
            請問網站源碼出售嗎?請問樓主的程序可以付費調試嗎?
              回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2015-01-17 11:28 Rebar

            F:\Program Files\dhtcrawler-master>rebar get-deps
            ==> dhtcrawler-master (get-deps)
            Uncaught error in rebar_core: {'EXIT',
            {badarg,
            [{re,split,
            [[84,69,83,83,68,65,84,65,95,80,82,69,70,73,
            88,61,70,58,92,28779,36710,22836,20225,
            19994,29256,92,83,121,115,116,101,109,92,
            116,101,115,115,100,97,116,97,92],
            "=",
            [{return,list},{parts,2}]],
            [{file,"re.erl"},{line,154}]},
            {rebar_port_compiler,'-os_env/0-lc$^0/1-0-',
            1,[]},
            {rebar_port_compiler,'-os_env/0-lc$^0/1-0-',
            1,[]},
            {rebar_port_compiler,os_env,0,[]},
            {rebar_port_compiler,setup_env,1,[]},
            {rebar_core,'-setup_envs/2-lc$^0/1-0-',2,[]},
            {rebar_core,setup_envs,2,[]},
            {rebar_core,execute,4,[]}]}}
            我在本地運行rebar get-deps出現這個錯誤,樓主幫忙 看下是什么問題啊?沒玩過,不知道怎么弄。  回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2015-08-11 17:28 DHTSEEK

            DHTSEEK百度收錄100多萬頁面啦,目前系統已開源,歡迎下載,地址 http://dwz.cn/1gL7Bl  回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2015-08-11 17:29 DHTSEEK

            @于濤
            DHTSEEK百度收錄100多萬頁面啦,目前系統已開源,歡迎下載,地址 http://dwz.cn/1gL7Bl   回復  更多評論   

            # re: 使用erlang實現P2P磁力搜索(開源) 2016-03-04 16:35 蝦米

            @DHTSEEK
            無法購買啊 ··  回復  更多評論   

            久久精品亚洲男人的天堂| 香蕉aa三级久久毛片| 99精品久久精品| 久久91精品国产91久久户| 亚洲国产精品久久久久婷婷软件| 99久久精品免费国产大片| 午夜精品久久久久久| 一本色综合网久久| 亚洲一区中文字幕久久| 一本综合久久国产二区| 99久久成人国产精品免费| 青春久久| 热99re久久国超精品首页| 久久综合亚洲鲁鲁五月天| 93精91精品国产综合久久香蕉| 日韩久久无码免费毛片软件 | 人妻无码αv中文字幕久久琪琪布| 囯产精品久久久久久久久蜜桃| 亚洲综合精品香蕉久久网97 | 久久青青草原亚洲av无码| 久久福利青草精品资源站免费| 国产美女亚洲精品久久久综合| 国产精品伊人久久伊人电影 | 亚洲伊人久久成综合人影院 | 色综合久久无码中文字幕| 一级做a爰片久久毛片看看| 久久e热在这里只有国产中文精品99| 性做久久久久久久| 亚洲精品乱码久久久久66| 亚洲精品国产自在久久| 久久青青草原精品国产不卡| 国产—久久香蕉国产线看观看| 国产精品久久国产精麻豆99网站| 色综合久久久久综合体桃花网| 国内精品综合久久久40p| 亚洲精品乱码久久久久久蜜桃不卡| 国产欧美久久久精品影院| 久久久亚洲欧洲日产国码是AV| 亚洲中文字幕伊人久久无码 | 久久se这里只有精品| 久久精品国产欧美日韩|