大數(shù)據(jù)除了Hadoop,還有Scrapy

責(zé)任編輯:editor005

2017-01-15 19:25:12

摘自:51CTO

輿情:通過獲取互聯(lián)網(wǎng)的數(shù)據(jù),監(jiān)測(cè)輿論動(dòng)向,評(píng)估事態(tài)發(fā)展并制定應(yīng)對(duì)策略;4 )房地產(chǎn),這個(gè)虐心又刺激的行業(yè),可以通過爬蟲獲取到的 交易、價(jià)格等數(shù)據(jù)來分析未來的房產(chǎn)走勢(shì)等等;

大數(shù)據(jù)除了Hadoop,還有Scrapy

  一、先來扯扯大數(shù)據(jù)

互聯(lián)網(wǎng)+概念的興起,中國的創(chuàng)業(yè)者幾乎把互聯(lián)網(wǎng)+這趟車開進(jìn)了所有領(lǐng)域,傳統(tǒng)領(lǐng)域的商家人心惶惶,言必談互聯(lián)網(wǎng)+,仿佛不套點(diǎn)互聯(lián)網(wǎng)的概念都不好意思宣傳自家產(chǎn)品;而趕在這波潮流之前的正是燥熱至今的“ 大數(shù)據(jù) ”。

在這個(gè)上到各界研究機(jī)構(gòu)、管理部門、企業(yè),下到各大論壇、媒體、甚至商販都能跟你聊“大數(shù)據(jù)”,你是不是覺得不拽點(diǎn)詞兒都不敢出門。

可誰真正解析大數(shù)據(jù)背后的含義?從早期依賴結(jié)構(gòu)化數(shù)據(jù)庫的挖掘分析發(fā)展到現(xiàn)今海量、多源、非結(jié)構(gòu)數(shù)據(jù)需要依賴并行算法才能解決數(shù)據(jù)的處理瓶頸,也事實(shí)上鑄就了Hadoop、Spark這些技術(shù)脫穎而出;然而大數(shù)據(jù)所帶來的數(shù)據(jù)噪聲、真實(shí)性、完整性、解釋性、誤導(dǎo)性、合法性等等卻都是不可忽視的挑戰(zhàn)。

我們談大數(shù)據(jù),就像男人談那玩意,似乎不加一個(gè)“大”就顯得不夠用似的,但騷年你要明白啊,科學(xué)證明,管不管用,還真不靠大。大固然可以吹噓,但重點(diǎn)你還得問問家里的媳婦兒那啥感受吶( 污了… )。

小編覺得企業(yè)利用好數(shù)據(jù)修煉好內(nèi)功才是重點(diǎn),大數(shù)據(jù)是,小數(shù)據(jù)也可以是,深度學(xué)習(xí)是,普通數(shù)據(jù)分析也可以是。

那么不得不說的一個(gè)最核心的問題來了,在這個(gè)信息通達(dá)到任意一個(gè)生活碎片都可能產(chǎn)生海量交互數(shù)據(jù)的環(huán)境,除了Hadoop、除了機(jī)器學(xué)習(xí),回歸到數(shù)據(jù)的本源,你是不是可以和別人侃侃爬蟲、侃侃Scrapy(讀音:[ skre p ])

除了你的產(chǎn)品外,你真的擁有大數(shù)據(jù)么?

如何獲取更廣泛的外部數(shù)據(jù)?

是開放數(shù)據(jù)API接口?

還是幾個(gè)半死不活的所謂數(shù)據(jù)交易市場(chǎng)?

顯然太過局限,那么下面就來介紹下這個(gè)可以自定義獲取幾乎所有能被訪問到的網(wǎng)站、APP數(shù)據(jù)的python爬蟲框架-Scrapy。

目前,除了搜索引擎爬蟲外,主流的被普遍大眾所使用的技術(shù)有:

基于C++的Larbin;基于Java的Webmagic、Nutch、Heritrix;基于Python的Scrapy,pyspider;基于Golang的Pholcus;基于.NET的abot;等等

如果從實(shí)用性和易懂的角度,推薦首選Python,一方面Python易于入門,各類開源庫齊全,另一方面Scrapy的社區(qū)活躍,遇到問題可以及時(shí)找到答案。對(duì)于Python的2個(gè)爬蟲技術(shù),Pyspider有自己的操作界面,簡單易用,但是幫助文檔少,自定義空間有限;而Scrapy除了社區(qū)活躍,他的優(yōu)點(diǎn)還在于其靈活的可自定義程度高,底層是異步框架twisted,并發(fā)優(yōu)勢(shì)明顯(吞吐量高)。

二、什么是Scrapy

“ Scrapy是一個(gè)為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架??梢詰?yīng)用在包括數(shù)據(jù)挖掘,信息處理或存儲(chǔ)歷史數(shù)據(jù)等一系列的程序中。其最初是為了 頁面抓取 (更確切來說, 網(wǎng)絡(luò)抓取 )所設(shè)計(jì)的, 也可以應(yīng)用在獲取API所返回的數(shù)據(jù)(例如 AmazonAssociates Web Services ) 或者通用的網(wǎng)絡(luò)爬蟲。”

以上是官方的說明,更詳細(xì)地說,Scrapy是一個(gè)十分健壯、非常好用的 從互聯(lián)網(wǎng)上抓取數(shù)據(jù) 的web框架。

它不僅僅提供了一些開箱即用的基本組件,還提供了強(qiáng)大的自定義功能。框架的學(xué)習(xí)規(guī)律就是修改配置文件,填充代碼就可以了;

同樣地,Scrapy只需一個(gè)配置文件就能組合各種組件和配置選項(xiàng),并且可以級(jí)聯(lián)多個(gè)操作如清理、組織、存儲(chǔ)到數(shù)據(jù)庫等。

關(guān)于他的強(qiáng)悍,舉個(gè)簡單例子來說:假設(shè)你抓取的目標(biāo)網(wǎng)站的每一頁有500個(gè)條目,Scrapy可以毫不費(fèi)勁地對(duì)目標(biāo)網(wǎng)站同時(shí)發(fā)起 20 個(gè)請(qǐng)求 ,假設(shè)帶寬足夠,每個(gè)請(qǐng)求需要 1秒鐘 完成,就相當(dāng)于每秒鐘爬取到20個(gè)頁面,即每秒鐘產(chǎn)生 10000個(gè) 條目數(shù)據(jù) 。再假設(shè)要把這些條目同時(shí)存儲(chǔ)到云上,且每一個(gè)條目的存儲(chǔ)需要3秒鐘,那么處理20個(gè)請(qǐng)求就需要運(yùn)行10000*3=30000個(gè)并發(fā)的寫入請(qǐng)求,對(duì)于傳統(tǒng)的多線程來說,就需要換成30000個(gè)線程,這顯然地造成系統(tǒng)無法承載。而對(duì)于Scrapy,只要硬件夠, 30000個(gè)并發(fā)也不是問題。

感受下爬蟲程序運(yùn)行帶來的酸爽吧

三、Scrapy能做什么

以上只是對(duì)Scrapy的一個(gè)簡單的普及,事實(shí)上現(xiàn)在Scrapy已是一個(gè)主流的Python開源爬蟲框架,它設(shè)計(jì)好了爬蟲應(yīng)用的基本骨架,使得用戶不再需要配備大量的人力去重復(fù)造輪子,同時(shí)它也為了實(shí)現(xiàn)不同的應(yīng)用目的留下了靈活的設(shè)計(jì)余地。使用一些其它的模塊,或者配合一些中間件,可以將Scrapy擴(kuò)展成為復(fù)雜的高級(jí)爬蟲程序。

解決了這個(gè)顧慮后,能夠發(fā)揮你的想象這有多可怕了么?當(dāng)然你不會(huì)簡單到認(rèn)為爬蟲也就是簡單的爬下電影列表、圖書這些吧!下面列舉些小編認(rèn)為可以操作的事情:

1 ) 輿情:通過獲取互聯(lián)網(wǎng)的數(shù)據(jù),監(jiān)測(cè)輿論動(dòng)向,評(píng)估事態(tài)發(fā)展并制定應(yīng)對(duì)策略;

2 )熱點(diǎn)新聞:監(jiān)測(cè)全網(wǎng)新聞的數(shù)據(jù),通過算法去監(jiān)測(cè)每個(gè)新聞的轉(zhuǎn)發(fā)、評(píng)論的單位時(shí)間增量趨勢(shì),發(fā)現(xiàn)潛在熱點(diǎn)新聞/社會(huì)事件,以此來打造一個(gè)熱點(diǎn)新聞源的供應(yīng)商/產(chǎn)品也極有可能;

3 )對(duì)某類金融產(chǎn)品的檢測(cè)和跟蹤、上市公司的 年報(bào)分析 等,具體點(diǎn)說,已經(jīng)有大神分享通過抓取雪球中粉絲量前5%的大V調(diào)倉記錄,來建立量化策略實(shí)現(xiàn)過200%以上的收益,當(dāng)然這也可能只是偶然;

4 )房地產(chǎn),這個(gè)虐心又刺激的行業(yè),可以通過爬蟲獲取到的 交易、價(jià)格等數(shù)據(jù)來分析未來的房產(chǎn)走勢(shì)等等;

5 )當(dāng)然也少不了來點(diǎn)污,作為宅男/宅女的你還可以做點(diǎn)羞羞的事兒,比如下面的圖片,不用多展開了吧,趕緊操起鍵盤吧……。

以上只是簡要列舉一二,當(dāng)然獲取到的數(shù)據(jù)怎么分析也是一項(xiàng)不小的技術(shù)活,尤其是非結(jié)構(gòu)化的文本數(shù)據(jù)的分析,推薦可使用些開源的jieba分詞、SnowNLP等進(jìn)行分析;這讓小編想起了前幾天老羅新發(fā)布的一項(xiàng)產(chǎn)品功能點(diǎn)—— Bigbang ,瞬間就能把一段文本語句炸裂成結(jié)構(gòu)更小的詞組,并達(dá)超準(zhǔn)確的詞組上語義分割,簡單說就是分詞技術(shù)已經(jīng)可以應(yīng)用到日常生活中,雖然這本身并不算什么新技術(shù),但是這項(xiàng)具體的應(yīng)用,讓小編更加堅(jiān)信了未來將會(huì)有越來越多的機(jī)器學(xué)習(xí)算法應(yīng)用于生活中。

所以爬蟲所能夠帶來更多的價(jià)值挖掘還請(qǐng)讀者們大膽地發(fā)揮想象吧,小編已經(jīng)不敢想下去了。不過小編還是提醒一句:

在你沒有十足把握的情況下,不要嘗試去摸一些重要部門的大門。

“ 一念清凈,烈焰成池 ;一念驚覺,航登彼岸”

四、關(guān)于Scrapy的一點(diǎn)嘮叨

這個(gè)時(shí)候你是不是有個(gè)疑問:

人家有反爬蟲技術(shù)啊,有Robot協(xié)議啊!

嗯,沒錯(cuò),事實(shí)上大部分情況下,反爬蟲的需求是不能影響到網(wǎng)站的正常使用,一個(gè)網(wǎng)站功能性需求一定要高于反爬蟲需求,所以大部分反爬蟲一定不會(huì)惡心到正常用戶的使用。也就是說,即使做了強(qiáng)反爬策略,爬蟲依然可以偽裝成人的正常訪問行為,只不過是增加抓取數(shù)據(jù)的代價(jià)而已,而不可能做到百分百的防止爬蟲。至于robot.txt只是約定,如公交車上貼著的【請(qǐng)為老弱病殘?jiān)凶屪恳粯?,遵不遵守完全在于爬蟲作者的意愿。因此 爬蟲與反爬蟲的對(duì)弈,爬蟲一定會(huì)勝。

即只要人能夠正常訪問的網(wǎng)頁,爬蟲在具備同等資源下就一定可以抓取。

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號(hào)-6京公網(wǎng)安備 11010502049343號(hào)