【ShoppingWebCrawler】-C#開發的基於Webkit內核開源爬蟲蜘蛛引擎

概述

  在各個電商平臺發展日漸成熟的今天。不少時候,咱們須要一些平臺上的基礎數據。好比:商品分類,分類下的商品詳細,甚至業務訂單數據。電商平臺大多數提供了相應的業務接口。容許ISV接入,用來擴展自身平臺的不足,更好的爲使用者提供服務。可是平臺的ISV接入門檻如今愈來愈高,審覈也愈來愈嚴格。拿不到接口SDK的密鑰,就只能望洋興嘆。html

   針對這種狀況,有時候就須要採起一些另類手段-蜘蛛爬蟲。 模擬正常的客戶端請求,對獲取響應的內容進行解析,從內容提取關鍵內容。python

蜘蛛爬蟲的核心就是:發送http請求,獲取響應。git

萬變不離其宗。使用python的作的爬蟲比較多,相應的工具包也比較豐富。好比大名鼎鼎的 scrapy。可是這種單純的發送請求 ,獲取響應的引擎,有時候很難在響應式交互頁面就顯得捉雞。大把大把的js ajax請求,讓響應的內容並非想要的結果。讓蜘蛛引擎搭配瀏覽器內核,看起來是個不錯的選擇。尤爲是對js H5支持較好的webkit內核,再好不過。github

pthon 爬蟲的典型:web

scrapy + selenium + PhantomJS + libcef
 

  做爲C#的擁躉者,咱們用C# 來實現上面的引擎機制。ShoppingWebCrawler 就是在這種背景下誕生的。ajax

 

項目github地址:ShoppingWebCrawler

開發語言:C#redis

開發工具:Visual Studio 2015 +.Net Framework4.0shell

運行平臺:Windowswindows

支持集羣:是瀏覽器

可視化工具:支持;可視化工具目前有針對蜘蛛的web瀏覽器工具,用來進行登陸受權,進程共享cookie。ShoppingPeeker 項目用來實現對蜘蛛數據的可視化操做。

承載方式:Windows 服務。

 

支持高效TCP通訊
支持集羣部署
支持Windows 服務+Headless
支持會話可靠性 登陸狀態保持
支持模擬 Chrome 請求發送解析響應
內置libcef 支持V8 解析JS

 

姊妹篇同步發行

【ShoppingPeeker】-基於Webkit內核的爬蟲蜘蛛引擎 ShoppingWebCrawler的姊妹篇-可視化任務Web管理

 

ShoppingWebCrawler

This Project is a WebCrawler build by .net framework . 
 

本項目是一個基於使用微軟.net framework 結合Google的webkit內核作的蜘蛛採集工具。 支持多進程的集羣模式。實現高性能的蜘蛛採集!

項目概述

使用此工具,進行電商平臺的數據採集。 本項目已經實現能夠採集淘寶、天貓、京東、拼多多、一號店、國美、蘇寧等主流電商平臺的網頁數據。

實現核心

一、使用基於 Xilium.CefGlue 的libcef綁定,實現C#操做webkit。進行可視化的登錄受權。不定時刷新,進行登錄狀態的模擬和守護。

二、使用Topshelf+libcef的Headless 模式(無頭模式),進行windows 服務承載。對蜘蛛進程進行掛載守護。

三、使用log4net進行日誌記錄

四、使用Quartz.Net 進行定時任務Schduler。

五、服務進程使用自定義高性能Socket(NTCPMessage)進行網絡通訊。對來自服務Client的請求進行請求應答。

六、集羣模式,使用簡易的多進程實現集羣。開啓不一樣的監聽端口,實現採集任務的負載均衡,進而大幅度提高硬件服務器的使用效率。

Xilium.CefGlue 簡介

Xilium.CefGlue是對CEF項目的.net的包裝,它是用P/Invoke的方式來調用CEF類庫的,請參見:https://bitbucket.org/xilium/xilium.cefglue/wiki/Home。 使用Xilium.CefGlue 能夠實現.net 操做Chrome瀏覽器內核。進而實現瀏覽器網頁加載,js V8的實現。

Topshelf簡介

Topshelf是建立Windows服務的一種方法。Topshelf是一個開源的跨平臺的宿主服務框架,支持Windows和Mono,只須要幾行代碼就能夠構建一個很方便使用的服務宿主。

引用安裝 一、官網:http://topshelf-project.com/ 這裏面有詳細的文檔及下載

安裝:TopshelfDemo.exe install

啓動:TopshelfDemo.exe start

重啓:TopshelfDemo.exe restart

卸載:TopshelfDemo.exe uninstall

什麼是Headless瀏覽器?

簡單的說就是一個沒有UI界面的瀏覽器。使用命令行進行代碼控制瀏覽器行爲,常見於自動化單元測試。

如何使用?

一、下載源碼到本地。好比:d:\src

二、使用visual studio2015 打開項目並編譯。

三、配置Redis 環境。本項目使用redis 進行進程間的cookie共享,從而實現登陸憑據cookie的跨進程共享。在UI進程和Heaadless進程間進行Cookie共享。

四、運行 ShoppingWebCrawler.Host 項目,便可運行。

如何使用界面工具進行請求的可視化?

編譯 ShoppingWebCrawler.Host.DeskTop ,獲得UI 工具,能夠對打開一個網址。好比登陸淘寶,就能夠在本地進程間共享淘寶登陸憑據。從而實現 特定的蜘蛛採集任務。好比:採集某個類目的商品。採集商品優惠券。

如何在Windows 服務進行承載?

編譯項目ShoppingWebCrawler.Host.WindowService,而後去項目的輸出目錄,在cmd 、powershell 定位到此目錄。執行:

ShoppingWebCrawler.Host.WindowService.exe install 便可。若是想卸載,那麼執行指令:ShoppingWebCrawler.Host.WindowService.exe uninstall .

參考topshelf的命令。

如何開啓集羣模式?

在項目ShoppingWebCrawler.Host 的app.config文件中

<!--是否開啓集羣模式-->
<add key="ClusteringMode" value="true"/>
<!--集羣子節點數量-->
<add key="ClusterNodeCount" value="3"/>

聯繫做者

MyBlog:http://www.cnblogs.com/micro-chen/ QQ:1021776019

相關文章
相關標籤/搜索