一、先來扯扯大數據
互聯網+概念的興起,中國的創業者幾乎把互聯網+這趟車開進了所有領域,傳統領域的商家人心惶惶,言必談互聯網+,仿佛不套點互聯網的概念都不好意思宣傳自家產品;而趕在這波潮流之前的正是燥熱至今的“ 大數據 ”。
在這個上到各界研究機構、管理部門、企業,下到各大論壇、媒體、甚至商販都能跟你聊“大數據”,你是不是覺得不拽點詞兒都不敢出門。
可誰真正解析大數據背后的含義?從早期依賴結構化數據庫的挖掘分析發展到現今海量、多源、非結構數據需要依賴并行算法才能解決數據的處理瓶頸,也事實上鑄就了Hadoop、Spark這些技術脫穎而出;然而大數據所帶來的數據噪聲、真實性、完整性、解釋性、誤導性、合法性等等卻都是不可忽視的挑戰。
我們談大數據,就像男人談那玩意,似乎不加一個“大”就顯得不夠用似的,但騷年你要明白啊,科學證明,管不管用,還真不靠大。大固然可以吹噓,但重點你還得問問家里的媳婦兒那啥感受吶( 污了… )。
小編覺得企業利用好數據修煉好內功才是重點,大數據是,小數據也可以是,深度學習是,普通數據分析也可以是。
那么不得不說的一個最核心的問題來了,在這個信息通達到任意一個生活碎片都可能產生海量交互數據的環境,除了Hadoop、除了機器學習,回歸到數據的本源,你是不是可以和別人侃侃爬蟲、侃侃Scrapy(讀音:[ skre p ])
除了你的產品外,你真的擁有大數據么?
如何獲取更廣泛的外部數據?
是開放數據API接口?
還是幾個半死不活的所謂數據交易市場?
顯然太過局限,那么下面就來介紹下這個可以自定義獲取幾乎所有能被訪問到的網站、APP數據的python爬蟲框架-Scrapy。
目前,除了搜索引擎爬蟲外,主流的被普遍大眾所使用的技術有:
基于C++的Larbin;基于Java的Webmagic、Nutch、Heritrix;基于Python的Scrapy,pyspider;基于Golang的Pholcus;基于.NET的abot;等等如果從實用性和易懂的角度,推薦首選Python,一方面Python易于入門,各類開源庫齊全,另一方面Scrapy的社區活躍,遇到問題可以及時找到答案。對于Python的2個爬蟲技術,Pyspider有自己的操作界面,簡單易用,但是幫助文檔少,自定義空間有限;而Scrapy除了社區活躍,他的優點還在于其靈活的可自定義程度高,底層是異步框架twisted,并發優勢明顯(吞吐量高)。
二、什么是Scrapy
“ Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架。可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中。其最初是為了 頁面抓取 (更確切來說, 網絡抓取 )所設計的, 也可以應用在獲取API所返回的數據(例如 AmazonAssociates Web Services ) 或者通用的網絡爬蟲。”
以上是官方的說明,更詳細地說,Scrapy是一個十分健壯、非常好用的 從互聯網上抓取數據 的web框架。
它不僅僅提供了一些開箱即用的基本組件,還提供了強大的自定義功能。框架的學習規律就是修改配置文件,填充代碼就可以了;
同樣地,Scrapy只需一個配置文件就能組合各種組件和配置選項,并且可以級聯多個操作如清理、組織、存儲到數據庫等。
關于他的強悍,舉個簡單例子來說:假設你抓取的目標網站的每一頁有500個條目,Scrapy可以毫不費勁地對目標網站同時發起 20 個請求 ,假設帶寬足夠,每個請求需要 1秒鐘 完成,就相當于每秒鐘爬取到20個頁面,即每秒鐘產生 10000個 條目數據 。再假設要把這些條目同時存儲到云上,且每一個條目的存儲需要3秒鐘,那么處理20個請求就需要運行10000*3=30000個并發的寫入請求,對于傳統的多線程來說,就需要換成30000個線程,這顯然地造成系統無法承載。而對于Scrapy,只要硬件夠, 30000個并發也不是問題。
感受下爬蟲程序運行帶來的酸爽吧
三、Scrapy能做什么
以上只是對Scrapy的一個簡單的普及,事實上現在Scrapy已是一個主流的Python開源爬蟲框架,它設計好了爬蟲應用的基本骨架,使得用戶不再需要配備大量的人力去重復造輪子,同時它也為了實現不同的應用目的留下了靈活的設計余地。使用一些其它的模塊,或者配合一些中間件,可以將Scrapy擴展成為復雜的高級爬蟲程序。
解決了這個顧慮后,能夠發揮你的想象這有多可怕了么?當然你不會簡單到認為爬蟲也就是簡單的爬下電影列表、圖書這些吧!下面列舉些小編認為可以操作的事情:
1 ) 輿情:通過獲取互聯網的數據,監測輿論動向,評估事態發展并制定應對策略;
2 )熱點新聞:監測全網新聞的數據,通過算法去監測每個新聞的轉發、評論的單位時間增量趨勢,發現潛在熱點新聞/社會事件,以此來打造一個熱點新聞源的供應商/產品也極有可能;
3 )對某類金融產品的檢測和跟蹤、上市公司的 年報分析 等,具體點說,已經有大神分享通過抓取雪球中粉絲量前5%的大V調倉記錄,來建立量化策略實現過200%以上的收益,當然這也可能只是偶然;
4 )房地產,這個虐心又刺激的行業,可以通過爬蟲獲取到的 交易、價格等數據來分析未來的房產走勢等等;
5 )當然也少不了來點污,作為宅男/宅女的你還可以做點羞羞的事兒,比如下面的圖片,不用多展開了吧,趕緊操起鍵盤吧……。
以上只是簡要列舉一二,當然獲取到的數據怎么分析也是一項不小的技術活,尤其是非結構化的文本數據的分析,推薦可使用些開源的jieba分詞、SnowNLP等進行分析;這讓小編想起了前幾天老羅新發布的一項產品功能點—— Bigbang ,瞬間就能把一段文本語句炸裂成結構更小的詞組,并達超準確的詞組上語義分割,簡單說就是分詞技術已經可以應用到日常生活中,雖然這本身并不算什么新技術,但是這項具體的應用,讓小編更加堅信了未來將會有越來越多的機器學習算法應用于生活中。
所以爬蟲所能夠帶來更多的價值挖掘還請讀者們大膽地發揮想象吧,小編已經不敢想下去了。不過小編還是提醒一句:
在你沒有十足把握的情況下,不要嘗試去摸一些重要部門的大門。
“ 一念清凈,烈焰成池 ;一念驚覺,航登彼岸”
四、關于Scrapy的一點嘮叨
這個時候你是不是有個疑問:
人家有反爬蟲技術啊,有Robot協議啊!
嗯,沒錯,事實上大部分情況下,反爬蟲的需求是不能影響到網站的正常使用,一個網站功能性需求一定要高于反爬蟲需求,所以大部分反爬蟲一定不會惡心到正常用戶的使用。也就是說,即使做了強反爬策略,爬蟲依然可以偽裝成人的正常訪問行為,只不過是增加抓取數據的代價而已,而不可能做到百分百的防止爬蟲。至于robot.txt只是約定,如公交車上貼著的【請為老弱病殘孕讓座】一樣,遵不遵守完全在于爬蟲作者的意愿。因此 爬蟲與反爬蟲的對弈,爬蟲一定會勝。
即只要人能夠正常訪問的網頁,爬蟲在具備同等資源下就一定可以抓取。