如何高效獲取大資料?動態ip代理:用爬蟲!

太陽小諸葛發表於2019-01-24

       在不同的作業系統中,Python存在細微的差別,因此有幾點您需要牢記在心。這裡小編使用的是Python3版本。

  Python自帶一個在終端視窗中執行的直譯器,讓您無需儲存並執行整個程式就能嘗試執行的Python程式碼片段

  長期以來,程式設計界都認為剛接觸一門新語言時假如首先使用它來編寫一個在螢幕上顯示訊息“Hello world”的程式,將給您帶來好運。

  要使用Python來編寫這類Hello World程式,只需一行程式碼:

  print(“Hello world”)

  這類程式雖然簡單,卻自有其用途,假如它能夠在您的系統上正確地執行,您編寫的任何Python程式都將如此。

  在Windows系統中搭建Python程式設計環境

  Windows系統並非都預設安裝了Python,因此您可能需要下載並安裝它,再下載並安裝一個文字編輯器。

   1.安裝Python

  首先,檢查您的系統是否安裝了Python,在“開始”選單中輸入commanc並按回車以開啟一個命令視窗;

  您也可按住shift鍵並右擊桌面,再選擇“在此處開啟命令視窗”。在終端視窗中輸入Python並按回車:假如出現了Python提示符(>>>),就說明您的系統安裝了Python。然而您也可能會看到一條錯誤訊息,指出Python是無法識別的命令。

  資料資訊內容是創造和決策的原材料,高質量的資料資訊內容都價值不菲。而利用網路爬蟲,小編們可以獲取大量的價值資料資訊內容,經分析可以發揮巨大的價值,比如:

  豆瓣、知乎:抓取優質答案,篩選出各話題下熱門內容,探索使用者的輿論導向。

  淘寶、京東:抓取商品、評論及銷量資料資訊內容,對各種商品及使用者的消費場景進行分析。

  搜房、鏈家:抓取房產買賣及租售資訊內容,分析房價變化趨勢、做不同區域的房價分析。

  拉勾、智聯:抓取各類職位資訊內容,分析各行業人才需求情況及薪資水平。

  雪球網:抓取雪球高回報使用者的行為,對股票市場進行分析和預測。

  公開的資料資訊內容源往往量小且時效性差,網路爬蟲則可以獲取最為即時且規模龐大的網際網路資料資訊內容,這對於做市場分析、競品調研、使用者分析、商業決策顯然是一個非常有效的方式。

  對於小白來說,網路爬蟲可能是一件非常複雜、技術門檻很高的事情。比如有的人則認為先要掌握網頁的知識,遂開始 HTML\CSS,結果入了前端的坑,瘁……

  但掌握正確的方法,在短時間內做到能夠抓取主流網站的資料資訊內容,其實非常容易實現,但建議您從一開始就要有一個具體的目標。

  在目標的驅動下,您的學習才會更加精準和高效。那些所有您認為必須的前置知識,都是可以在完成目標的過程中學到的。這裡給您一條平滑的、零基礎快速入門的學習路徑。

   學習 Python 包並實現基本的網路爬蟲過程

  大部分網路爬蟲都是按“傳送請求——獲得頁面——解析頁面——抽取並儲存內容”這樣的流程來進行,這其實也是模擬了小編們使用瀏覽器獲取網頁資訊內容的過程。

  Python中網路爬蟲相關的包很多:urllib、requests、bs4、scrapy、pyspider 等,建議從requests+Xpath 開始,requests 負責連線網站,返回網頁,Xpath 用於解析網頁,便於抽取資料資訊內容。

  假如您用過 BeautifulSoup,會發現 Xpath 要省事不少,一層一層檢查元素程式碼的工作,全都省略了。這樣下來基本套路都差不多,一般的靜態網站根本不在話下,豆瓣、糗事百科、騰訊新聞等基本上都可以上手了。

   掌握各種技巧,應對特殊網站的反爬措施

  當然,網路爬蟲過程中也會經歷一些絕望啊,比如被網站封IP、比如各種奇怪的驗證碼、userAgent訪問限制、各種動態載入等等。

  遇到這些反網路爬蟲的手段,當然還需要一些高階的技巧來應對,常規的比如訪問頻率控制、使用代理IP池、抓包、驗證碼的OCR處理等等。

  往往網站在高效開發和反網路爬蟲之間會偏向前者,這也為網路爬蟲提供了空間,掌握這些應對反網路爬蟲的技巧,絕大部分的網站已經難不到您了。

   學習 scrapy,搭建工程化的網路爬蟲

  掌握前面的技術一般量級的資料資訊內容和程式碼基本沒有問題了,但是在遇到非常複雜的情況,可能仍然會力不從心,這個時候,強大的 scrapy 框架就非常有用了。

  scrapy 是一個功能非常強大的網路爬蟲框架,它不僅能便捷地構建request,還有強大的 selector 能夠方便地解析 response,然而它最讓人驚喜的還是它超高的效能,讓您可以將網路爬蟲工程化、模組化。

  學會 scrapy,您可以自己去搭建一些網路爬蟲框架,您就基本具備網路爬蟲工程師的思維了。

   學習資料資訊內容庫基礎,應對大規模資料資訊內容儲存

  爬回來的資料資訊內容量小的時候,您可以用文件的形式來儲存,一旦資料資訊內容量大了,這就有點行不通了。所以掌握一種資料資訊內容庫是必須的,學習目前比較主流的 MongoDB 就OK。

  MongoDB 可以方便您去儲存一些非結構化的資料資訊內容,比如各種評論的文字,圖片的連結等等。您也可以利用PyMongo,更方便地在Python中操作MongoDB。

  因為這裡要用到的資料資訊內容庫知識其實非常簡單,主要是資料資訊內容如何入庫、如何進行提取,在需要的時候再學習就行。

   分散式網路爬蟲,實現大規模併發採集

  抓取基本資料資訊內容已經不是問題了,您的瓶頸會集中到抓取海量資料資訊內容的效率。這個時候,相信您會很自然地接觸到一個很厲害的名字:分散式網路爬蟲。

  分散式這個東西,聽起來很恐怖,但其實就是利用多執行緒的原理讓多個網路爬蟲同時工作,需要您掌握 Scrapy + MongoDB + Redis 這三種工具。

  Scrapy 前面小編們說過了,用於做基本的頁面抓取,MongoDB 用於儲存抓取的資料資訊內容,Redis 則用來儲存要抓取的網頁佇列,也就是任務佇列。

  所以有些東西看起來很嚇人,但其實分解開來,也不過如此。當您能夠寫分散式的網路爬蟲的時候,那麼您可以去嘗試打造一些基本的網路爬蟲架構了,實現一些更加自動化的資料資訊內容獲取。

  您看,這一條學習路徑下來,您已然可以成為老司機了,非常的順暢。所以在一開始的時候,儘量不要系統地去啃一些東西,找一個實際的專案(開始可以從豆瓣、小豬這類簡單的入手),直接開始就好。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561288/viewspace-2564648/,如需轉載,請註明出處,否則將追究法律責任。

相關文章