平庸技術流,用 WebApi +AngularJS 實現網路爬蟲

來源:互聯網
上載者:User

標籤:

最近園子裡網路爬蟲很火爆,從 PHP 到 Python,從 windows服務 到 winform 程式,各路大神各顯神通。小弟也獻下醜,從平庸流出發,簡述下 WebApi +AngularJS 方式實現網路爬蟲。

一、技術架構1.1 前端:

AngularJS,建立SPA(單頁面應用)。爬蟲需要長時間的等待伺服器返回結果,必須使用ajax實現,使用JQuery一樣可以做到。

 

1.2 後端:

WebApi。AngularJS 配合 WebApi 使用十分融洽。

 

1.3 後端用到的架構/庫:

a. Abp,最近園子裡很火的基礎架構,最大的優點是分模組的實現,包括 AppService(WebApi) 層的分模組,使用後,代碼結構非常清晰。詳細內容可以見 基於DDD的現代ASP.NET開發架構--ABP系列文章總目錄

 

b. 蘇飛論壇的C#HttpHelper萬能架構,用於Html頁面的採集,可以直接使用『HTTP代理』讀取,這點很重要!

需要注意的一點是,這個架構不是免費的,需要成為年費會員才可以下載。

 

c. Ivony的Jumony庫,項目介紹:“Jumony Core首先提供了一個近乎完美的HTML解析引擎,其解析結果無限逼近瀏覽器的解析結果。支援CSS3選取器。”

 

二、技術實現2.1、抓取免費的 Http Proxy 位址。

這個百度就行,可以搜尋到一大堆的提供 Http 代理網址的網站,首先將這些免費的Http代理抓取大自己的代理庫,第二步和第三步需要用到這些代理。使用時,要記錄代理的可用情況,設定策略,失敗次數過多時,剔除掉。

當然,土豪直接購買收費的代理即可,穩定性高。

下面是我抓取的代理列表:

被禁的代理(我設定策略是失敗次數大於成功次數3次,即拋棄):

 

 

2.2、讀取文章列表(單線程)

有了足夠的Http代理列表後,就可以抓取網頁了。

後端實現功能:使用 HttpHelper 掛代理抓取網頁,然後使用  Jumony 分析頁面內容。同時要記錄每個 Http 代理的成功/失敗情況。

前端控制流程程:根據 代理抓取的結果,判斷是否抓取成功。如果成功,繼續下一個頁面的抓取;如果失敗,換個代理繼續抓取當前頁。

由於文章列表不會太多,用單線程抓取足夠了。

 

2.3、讀取文章(多線程)

通過第二步抓取到了大量未讀取內容的文章後,這時候就需要抓取文章內容了。由於量比較大,通過多線程實現。

所謂的多線程,就是通過 Ajax 同時調用多個 WebApi 進程,通過監控返回結果。

點擊『開始讀取』後

 點擊『停止讀取』後:

 

三、後記

沒有用到什麼高深的知識,高深的部分都被 AngularJS、Abp、HttpHelper、Jomony實現,因此是平庸技術流的實現。

以上。

 

平庸技術流,用 WebApi +AngularJS 實現網路爬蟲

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.