概述
在各個電商平台發展日漸成熟的今天。很多時候,我們需要一些平台上的基礎數據。比如:商品分類,分類下的商品詳細,甚至業務訂單數據。電商平台大多數提供了相應的業務接口。允許ISV接入,用來擴展自身平台的不足,更好的為使用者提供服務。但是平台的ISV接入門檻現在越來越高,審核也越來越嚴格。拿不到接口SDK的密鑰,就只能望洋興嘆。
針對這種情況,有時候就需要采取一些另類手段-蜘蛛爬蟲。 模擬正常的客戶端請求,對獲取響應的內容進行解析,從內容提取關鍵內容。
蜘蛛爬蟲的核心就是:發送http請求,獲取響應。
萬變不離其宗。使用python的做的爬蟲比較多,相應的工具包也比較豐富。比如大名鼎鼎的 scrapy。但是這種單純的發送請求 ,獲取響應的引擎,有時候很難在響應式交互頁面就顯得捉雞。大把大把的js ajax請求,讓響應的內容並不是想要的結果。讓蜘蛛引擎搭配瀏覽器內核,看起來是個不錯的選擇。尤其是對js H5支持較好的webkit內核,再好不過。
pthon 爬蟲的典型:
scrapy + selenium + PhantomJS + libcef
作為C#的擁躉者,我們用C# 來實現上面的引擎機制。ShoppingWebCrawler 就是在這種背景下誕生的。
項目github地址:ShoppingWebCrawler
開發語言:C#
開發工具:Visual Studio 2015 +.Net Framework4.0
運行平台:Windows
支持集群:是
可視化工具:支持;可視化工具目前有針對蜘蛛的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內核做的蜘蛛采集工具。 支持多進程的集群模式。實現高性能的蜘蛛采集!
項目概述
使用此工具,進行電商平台的數據采集。 本項目已經實現可以采集淘寶、天貓、京東、拼多多、一號店、國美、蘇寧等主流電商平台的網頁數據。
實現核心
1、使用基於 Xilium.CefGlue 的libcef綁定,實現C#操作webkit。進行可視化的登陸授權。不定時刷新,進行登陸狀態的模擬和守護。
2、使用Topshelf+libcef的Headless 模式(無頭模式),進行windows 服務承載。對蜘蛛進程進行掛載守護。
3、使用log4net進行日志記錄
4、使用Quartz.Net 進行定時任務Schduler。
5、服務進程使用自定義高性能Socket(NTCPMessage)進行網絡通信。對來自服務Client的請求進行請求應答。
6、集群模式,使用簡易的多進程實現集群。開啟不同的監聽端口,實現采集任務的負載均衡,進而大幅度提升硬件服務器的使用效率。
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,只需要幾行代碼就可以構建一個很方便使用的服務宿主。
引用安裝 1、官網:http://topshelf-project.com/ 這里面有詳細的文檔及下載
安裝:TopshelfDemo.exe install
啟動:TopshelfDemo.exe start
重啟:TopshelfDemo.exe restart
卸載:TopshelfDemo.exe uninstall
什么是Headless瀏覽器?
簡單的說就是一個沒有UI界面的瀏覽器。使用命令行進行代碼控制瀏覽器行為,常見於自動化單元測試。
如何使用?
1、下載源碼到本地。比如:d:\src
2、使用visual studio2015 打開項目並編譯。
3、配置Redis 環境。本項目使用redis 進行進程間的cookie共享,從而實現登錄憑據cookie的跨進程共享。在UI進程和Heaadless進程間進行Cookie共享。
4、運行 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