個人認為爬蟲框架分抓取框架和分析框架
1)抓取框架
.net 市面上好的似乎不多,選擇要素分兩種:1.輕量型,2.重量型。
1. 輕量型是可以定制一些特殊的功能或者插件開關形式。總體性能高,速度快。
自己寫的webclient,httprequest,httpclient等。或者直接socket編寫!
2. 重量型是可以基本模式瀏覽器,更加傻瓜化,也基本屏蔽了一些反爬蟲機制。
如webbrower或者其他的webkit瀏覽器內核封裝的.net框架。
如:https://github.com/cefsharp/CefSharp (.NET (WPF and Windows Forms) bindings for the Chromium Embedded Framework)
抓取的特殊功能包括:cookie支持(默認),301自動跳轉,https默認支持,gzip等壓縮默認支持,自動多種方式識別編碼,默認模擬瀏覽器header,模擬css和js執行等等。
當然越是功能強大,性能越差些,但是適應各種情況的能力越強(反爬蟲能力),輕量型和重量型適應的抓取場景也都不一樣。
如:攜程的高級手法
技術選擇:
HttpHelper(作者是收費的,看了源碼,其實功能也不強大;自己也能做,只是原來寫的http框架源碼沒了,急着用暫時用下)
scrapysharp 中的ScrapingBrowser
.net HttpWebRequest 簡單封裝下
.net webclient 簡單封裝下
2)分析框架
舊技術:正則表達式
新方式: scrapysharp,HtmlAgilityPack,CsQuery 等等(還有很多)
scrapysharp:擴展自HtmlAgilityPack,非常好用。(支持css選擇器方式,快速上手)
css的選擇器語法:http://www.w3school.com.cn/cssref/css_selectors.asp
參考資料: http://www.cnblogs.com/arxive/p/7075306.html
示例
HtmlAgilityPack:本來就好用,但是用的時候還是要進行部分算法處理。(支持xpath方式獲取,快速上手)
百度一下,資料不少。
示例
CsQuery:似乎對中文 的支持有bug,獲取html的時候,中文會亂碼,不知道為什么。(支持jq(jquery)方式獲取,快速上手)
https://github.com/jamietre/CsQuery
示例
Csoup
.net 版本的jsoup。當然csoup的相關文檔少,建議直接看jsoup的文檔(也一樣的)。(支持jq(jquery)的方式獲取,快速上手)
地址: http://nsoup.codeplex.com/
文檔:http://www.open-open.com/jsoup/
歡迎交流,一起了解爬蟲技術更多知識,完善技術棧,.net 開源因你更美好。開源QQ群: .net 開源基礎服務 238543768
by 車江毅