當前位置:
首頁 > 知識 > 我是如何零基礎開始能寫爬蟲的?

我是如何零基礎開始能寫爬蟲的?






剛開始接觸爬蟲的時候,簡直驚為天人,十幾行代碼,就可以

將無數網頁的信息全部獲取下來,自動選取網頁元素,自動整理成結構化的文件




利用這些數據,可以做很多領域的分析、市場調研,獲得很多有價值的信息,可以應用在很多的工作場景,於是果斷開始學習。



- ? -


並非開始都是最容易的




剛開始對爬蟲不是很了解,又沒有任何的計算機、編程基礎,確實有點懵逼。

從哪裡開始,哪些是最開始應該學的

,哪些應該等到有一定基礎之後再學,也沒個清晰的概念。



因為要學編程,那先從 Python 開始吧。於是看了一些教程和書籍,了解基本的

數據結構

,然後是

列表、字典、元組,各種函數和控制語句

(條件語句、循環語句)。



學了一段時間,才發現自己還沒接觸到真正的爬蟲呢,而且

純理論學習很快就忘了

,回去複習又太浪費時間,簡直不要太絕望。把 Python 的基礎知識過了一遍之後,我竟然還沒裝一個可以敲代碼的IDE。




- ? -


開始直接上手



轉機出現在看過一篇爬蟲的技術文章後,清晰的思路和通俗易懂的語言讓我覺得,這才是我想學的爬蟲。於是決定先配一個環境,試試看爬蟲到底是怎麼玩的。




因為怕出錯,裝了比較保險的 Anaconda,用自帶的 Jupyter Notebook 作為IDE來寫代碼。看到很多人說因為配置環境出各種BUG,簡直慶幸。

很多時候打敗你的,並不是事情本身,說的就是爬蟲配置環境這事兒。



遇到的另一個問題是,

Python 的爬蟲可以用很多包或者框架來實現,應該選哪一種呢?

我的原則就是是簡單好用,寫的代碼少,對於一個小白來說,性能、效率什麼的,統統被我 pass 了。於是開始接觸 urllib、美麗湯(BeautifulSoup),因為聽別人說很簡單。




上手的第一個案例是豆瓣,照著一些爬取豆瓣電影的入門級例子開始看,從這些例子裡面,了解了一點點爬蟲的基本原理:下載頁面、解析頁面、定位並抽取數據。




當然並沒有去系統看 urllib 和 BeautifulSoup 了,我需要把眼前實例中的問題解決,

比如下載、解析頁面,基本都是固定的語句,直接用就行





用 urllib 下載和解析頁面的固定句式



當然 BeautifulSoup 中的基本方法是不能忽略的,但也無非是 

find、get_text() 

之類,信息量很小。就這樣,

通過別人的思路和自己查找美麗湯的用法

,完成了豆瓣電影的基本信息爬取。






用 BeautifulSoup 爬取豆瓣電影詳情




- ? -


爬蟲漸入佳境




有了一些套路和形式,就會有目標,可以接著往下學了。自己去摸索爬取更多的信息,爬取多個頁面。這個時候就發現基礎不足了,

比如爬取多個元素、翻頁、處理多種情況等涉及的語句控制,又比如提取內容時涉及到的字元串、列表、字典的處理

,還遠遠不夠。




再回去補充 Python 的基礎知識,就很有針對性,而且能馬上能用於解決問題

,也就理解得更深刻。




後來認識到 xpath 之後相見恨晚,這才是入門必備利器啊,

直接Chrome複製就可以了

,指哪打哪。即便是要自己寫 xpath,

以w3school上幾頁的 xpath 教程,一個小時也可以搞定了




requests+xpath 爬取豆瓣TOP250圖書信息




- ? -


跟反爬蟲杠上了




通過 requests+xpath,我可以去爬取很多網站網站了,後來自己練習了小豬的租房信息和噹噹的圖書數據。爬拉勾的時候發現了問題,自己的請求根本不會返回信息,然後終於知道別人代碼中的 headers 是幹啥的了??。






在爬蟲中添加 headers 信息,偽裝成真實用戶




接著是各種定位不到元素,然後知道了這是非同步載入,

數據根本不在網頁源代碼中,需要通過抓包來獲取網頁信息

。於是在各種 JS、XHR的文件中 preview,尋找包含數據的鏈接。




當然知乎還好,本身載入的文件不多,找到了 json 文件直接獲取對應的數據。(這裡要安利一個chrome插件:jsonview,讓小白輕鬆看懂 json 文件)





瀏覽器抓取 JavaScript 載入的數據




在這裡就對反爬蟲有了認識,當然這還是最基本的,更嚴格的

IP限制、驗證碼、文字加密

等等,可能還會遇到很多難題。




比如後來在爬其他網站的時候就被封了IP,簡單的可以通過 time模塊控制爬取頻率的方法解決,限制比較嚴格或者需要保證爬取速度,就嘗試用代理IP來解決。




當然,後來也試了一下 Selenium,這個就真的是按照真實的用戶瀏覽行為(點擊、搜索、翻頁)來實現爬蟲,

所以對於那些反爬蟲特別厲害的網站,又沒有辦法解決,Selenium 超級好用

,雖然速度稍微慢點。






- ? -


嘗試強大的 Scrapy 框架




有了 requests+xpath 和抓包大法,就可以做很多事情了,豆瓣各分類下的電影,58同城、知乎、拉勾這些網站基本都沒問題。不過,當爬取的數據量級很大,而且需要靈活地處理各個模塊的話,會顯得很力不從心。




於是了解到強大的 Scrapy 框架,它不僅能便捷地構建 Request,還有強大的 Selector 能夠方便地解析 Response,然而最讓人驚喜的還是

它超高的性能,可以將爬蟲工程化、模塊化






Scrapy 框架的基本組件





學會 Scrapy,自己去嘗試搭建了簡單的爬蟲框架,在做大規模數據爬去的時候能夠結構化、工程化地思考大規模的爬取問題。




當然 Scrapy 本身的 selector 、中間件、spider 等會比較難理解,

還是建議結合具體的例子,參考別人的代碼,去理解其中實現的過程

,這樣能夠更好地理解。






用 Scrapy 爬取了大量租房信息




- ? -


本地文件搞不動了,上資料庫




爬回來大量的數據之後就發現,

本地的文件存起來非常不方便,即便存下來了,打開大文件電腦會卡得很嚴重

。怎麼辦呢?果斷上資料庫啊,於是開始入坑 MongoDB。結構化、非結構化的數據都能夠存儲,安裝好 PyMongo,就可以方便地在 Python 中操作資料庫了。




當然對於爬蟲這一塊,並不需要多麼高深的資料庫技術,

主要是數據的入庫和提取,增刪查改等基本操作






爬取拉勾招聘數據並用 MongoDB 存儲




- ? -


傳說中的分散式爬蟲




這個時候,基本上很大一部分的網頁都能爬了,

瓶頸就集中到爬取大規模數據的效率

。因為學了 Scrapy,於是自然地接觸到一個很厲害的名字:分散式爬蟲。




分散式這個東西,一聽不明覺厲,感覺很恐怖,但其實就是利用多線程的原理讓多個爬蟲同時工作,除了前面學過的 Scrapy 和 MongoDB,好像還需要了解 Redis。




Scrapy 用於做基本的頁面爬取,MongoDB 用於存儲爬取的數據,Redis 則用來存儲要爬取的網頁隊列,也就是任務隊列




分散式這東西看起來很嚇人,但其實分解開來,循序漸進地學習,也不過如此。






分散式爬58同城:定義項目內容部分







零基礎學習爬蟲,坑確實比較多,總結如下:



1.環境配置,各種安裝包、環境變數,對小白太不友好;


2.缺少合理的學習路徑,上來 Python、HTML 各種學,極其容易放棄;


3.Python有很多包、框架可以選擇,但小白不知道哪個更友好;


4.遇到問題甚至不知道如何描述,更不用說去尋找解決辦法;


5.網上的資料非常零散,而且對小白不友好,很多看起來雲里霧裡;


6.有些東西看似懂了,但結果自己寫代碼還是很困難;


……………………






所以跟我一樣,很多人爬坑最大的體會是:

盡量不要系統地去啃一些東西,找一個實際的項目(從豆瓣這種簡單的入手),直接開始就好




因為爬蟲這種技術,既不需要你系統地精通一門語言,也不需要多麼高深的資料庫技術,

從實際的項目中去學習這些零散的知識點,你能保證每次學到的都是最需要的那部分




當然麻煩的是,在具體的問題中,

如何找到具體需要的那部分學習資源、如何篩選和甄別,遇到困難時如何有效解決

,是很多初學者面臨的大問題。




DC學院準備了一門非常系統的爬蟲課程,除了為你提供一條清晰、無痛的學習路徑,我們甄選了

最實用的學習資源

以及龐大的

主流爬蟲案例庫

。即便是零基礎,經過短時間的學習,也能很好地掌握爬蟲這個技能,獲取你想得到的數據。 









已有 2000+ 同學加入,

超級優惠限額開啟


優惠限前100名,先到先得,速搶!






《Python爬蟲:入門+進階》大綱







第一章:Python 爬蟲入門




1

、什麼是爬蟲


網址構成和翻頁機制


網頁源碼結構及網頁請求過程


爬蟲的應用及基本原理


 


2、初識Python爬蟲


Python

爬蟲環境搭建


創建第一個爬蟲:爬取百度首頁


爬蟲三步驟:獲取數據、解析數據、保存數據


 


3、使用Requests爬取豆瓣短評


Requests

的安裝和基本用法


Requests 

爬取豆瓣短評信息


一定要知道的爬蟲協議


 


4、使用Xpath解析豆瓣短評


解析神器

Xpath

的安裝及介紹


Xpath

的使用:瀏覽器複製和手寫


實戰:用

 Xpath 

解析豆瓣短評信息


 


5、使用pandas保存豆瓣短評數據


pandas 

的基本用法介紹


pandas

文件保存、數據處理


實戰:使用

pandas

保存豆瓣短評數據


 


6、瀏覽器抓包及headers設置(案例一:爬取知乎)


爬蟲的一般思路:抓取、解析、存儲


瀏覽器抓包獲取

Ajax

載入的數據


設置

headers 

突破反爬蟲限制


實戰:爬取知乎用戶數據


 


7、數據入庫之MongoDB(案例二:爬取拉勾)


MongoDB

RoboMongo

的安裝和使用


設置等待時間和修改信息頭


實戰:爬取拉勾職位數據


將數據存儲在

MongoDB


補充實戰:爬取微博移動端數據


 


8、Selenium爬取動態網頁(案例三:爬取淘寶)


動態網頁爬取神器

Selenium

搭建與使用


分析淘寶商品頁面動態信息


實戰:用

Selenium 

爬取淘寶網頁信息


 


 


第二章:

Python

爬蟲之

Scrapy

框架


 


1、

爬蟲工程化及

Scrapy

框架初窺


html

css

js

、資料庫、

http

協議、前後台聯動


爬蟲進階的工作流程


Scrapy

組件:引擎、調度器、下載中間件、項目管道等


常用的爬蟲工具:各種資料庫、抓包工具等


 


2、Scrapy安裝及基本使用


Scrapy

安裝


Scrapy

的基本方法和屬性


開始第一個

Scrapy

項目


 


3、Scrapy選擇器的用法


常用選擇器:

css

xpath

re

pyquery


css

的使用方法


xpath

的使用方法


re

的使用方法


pyquery

的使用方法


 


4、Scrapy的項目管道


Item Pipeline

的介紹和作用


Item Pipeline

的主要函數


實戰舉例:將數據寫入文件


實戰舉例:在管道里過濾數據


 


5、Scrapy的中間件


下載中間件和蜘蛛中間件


下載中間件的三大函數


系統默認提供的中間件


 


6、Scrapy的Request和Response詳解


Request

對象基礎參數和高級參數


Request

對象方法


Response

對象參數和方法


Response

對象方法的綜合利用詳解


 




第三章:

Python

爬蟲進階操作


 


1、

網路進階之谷歌瀏覽器抓包分析


http

請求詳細分析


網路面板結構


過濾請求的關鍵字方法


複製、保存和清除網路信息


查看資源發起者和依賴關係


 


2、數據入庫之去重與資料庫


數據去重


數據入庫

MongoDB


 




第四章:分散式爬蟲及實訓項目


 


1、大規模並發採集——分散式爬蟲的編寫


分散式爬蟲介紹


Redis資料庫和Scrapy_redis安裝和使用


消息隊列和RabbitMQ


Celery分散式隊列簡介




2. 實訓項目(一)—— 58同城出租信息爬取


爬取58同城租房信息


scrapy爬蟲抓取網站的整體流程


解析函數和錯誤回調的編寫


利用管道進行數據清洗、計算和入庫


使用代理IP突破反爬限制


確定網頁爬取的優先順序和管道的優先順序




3. 實訓項目(二)

—— 去哪兒網模擬登陸


利用cookie進行模擬登陸


cookie和session的重要性


分析HTTP請求尋找模擬登陸需要的所有cookie值




4. 實訓項目(三)

—— 京東商品數據抓取


通用爬蟲CrawlSpider


鏈接提取器和爬取規則


部署分散式爬蟲實現分散式爬取


利用scrapy_redis實現URL去重








- 高效的學習路徑 -


 





一上來就講理論、語法、編程語言是非常不合理的,課程會

直接從具體的案例入手,通過實際的操作,學習具體的知識點

。我們為你規划了一條系統的學習路徑,讓學習更加系統和高效。


 


說點具體的,比如我們會直接用 lxml+Xpath取代 BeautifulSoup 來進行網頁解析,減少你不必要的檢查網頁元素的操作,工具的安裝都有詳細教程及常見錯誤處理,

多種工具都能完成的,我們會給你最簡單的方法

,這些看似細節,但可能是很多人都會踩的坑。






- 每課都有學習資料 -


 


網上的資料非常不系統,且良莠不齊,往往搜索、篩選非常浪費時間。當然你可能收集了以G計的的學習資源,但保存後從來沒打開過?

我們已經幫你找到了最有用的那部分,並且用最簡單的形式描述出來

,幫助你學習,你可以把更多的時間用於練習和實踐。


 


考慮到各種各樣的問題,我們在每一節都準備了課後資料,包含四個部分:


 


1.課程重點筆記,詳細闡述重點知識,幫助你理解和後續快速複習;


2.默認你是小白,補充所有基礎知識,哪怕是軟體的安裝與基本操作;


3.課內外案例提供參考代碼學習,讓你輕鬆應對主流網站爬蟲;


4.超多延伸知識點和更多問題的解決思路,讓你有能力去解決實際中遇到的一些特殊問題。






某節部分課後資料


 




- 超多

案例,覆蓋主流網站 -


 


課程中提供了目前最常見的網站爬蟲案例:豆瓣、百度、知乎、淘寶、京東、微博……

每個案例在課程視頻中都有詳細分析,老師帶你完成每一步操作

,專治各種 「看得懂案例,寫不出代碼」 。


 


另外,我們還會補充比如小豬、鏈家、58同城、網易雲音樂、微信好友等案例,提供思路與代碼。

多次的模仿和練習之後,你可以很輕鬆地寫出自己的爬蟲代碼,並能夠輕鬆爬取這些主流網站的數據。


 









- 爬蟲技能進階及數據存儲、處理 -


 


懂得基本的爬蟲是遠遠不夠的,所以我們會用實際的案例,帶你了解一些網站的反爬蟲措施,並且用具體的技術繞過限制。

比如非同步載入、IP限制、headers限制、驗證碼等等

,這些比較常見的反爬蟲手段,你都可以很好地規避。


 


工程化的爬蟲、及分散式爬蟲技術,讓你有獲取大規模數據的可能,一次性從入門到進階。

除了爬蟲的內容,你還將了解資料庫(Mongodb)、pandas 的基本知識,幫你存儲爬取的數據,同時可以對數據進行管理和清洗

,你可以獲得更乾淨的數據,以便後續的分析和處理。







 


- 導師團隊 -




小X和小Y都是知乎爬蟲話題下的大V,並且都是造數的全職爬蟲工程師。他們給過我很多幫助,這個課也主要由他們來講授。小X和小Y在在成為大佬的路上也爬過很多坑,所以知道小白要學什麼、怎麼學。最重要的是,他們喜歡分享,還威脅大BOSS黃震昕(造數CEO)加入,這也是花無數心血完成的精品

課程。







黃震昕


造數科技創始人兼CEO




創立的造數科技是一家新一代智能雲數據採集服務提供商,幫助企業和個人輕鬆獲取並分析、利用外部數據,幫助其完成市場分析、競品監控、輿情監控、商機發現等。造數上線一年以來,已經服務了13000多個企業和個人客戶,分布在零售、電商、金融、資詢、大數據等行業。

造數新一代智能雲爬蟲產品已編入人教版高中信息技術教材(2018年9月出版)。









劉暢(小X)


高級爬蟲工程師

 




造數爬蟲項目組主要負責人, CPO(首席爬蟲工程師),因常年對淘寶,京東,58,高德,美團,等互聯網獨角獸企業進行反爬策略分析並抓取,而被各大互聯網公司成為頭號「害蟲」,見之必殺(程序員何苦為難程序員),目前造數構建大型分散式爬蟲,和開發日IP過十萬的高效代理池系統。









張世潤(小Y)


高級爬蟲工程師 




愛好者:喜歡Python,擅長爬蟲,數據處理; 


創作者:知乎爬蟲話題大V,原創文章近百篇,擁有數千粉絲; 


學習者:愛學習的「萌新」,自學成長為爬蟲工程師,深諳自學之道,願分享所有能量帶大家入門。








- 老師及時解決你的每一個問題 -




除了經驗豐富、帶你一步步實操的課程老師之外,DC學院還建立了提升效率的學習群,

助教老師會在群里及時解答學員每一個疑問

。同時,你還可以跟一群未來優秀的爬蟲工程師,

分享經驗、代碼、數據,探討爬蟲和數據分析技術




也有同學經過一個月的學習,能夠寫出分散式的框架,去爬去大規模的數據。我們也有信心讓你在短時間內,達到爬取大規模數據的水平。







 快速解決問題,學習效率才更高










【課程信息】







「 課程名稱 」


Python 爬蟲:入門+進階





「 學習周期 」


建議每周至少學習8小時,2個月內完成課程




「 上課形式 」


錄播課程,可隨時開始上課,反覆觀看




「 面向人群 」


零基礎的小白,負基礎的小白白




「 答疑形式 」


學習群老師隨時答疑,即便是最初級的問題




「 課程資料 」


重點筆記、操作詳解、參考代碼、課後拓展




「 課程案例 」


爬取豆瓣短評、圖書、電影數據


爬取知乎用戶、回答數據


爬取淘寶、京東商品數據


爬取拉勾職位數據


爬取去哪兒旅遊景點數據


爬取58同城租房數據






 


超低優惠名額打架搶購中



¥299(原價¥399),限額100名




長按下方二維碼,立即去搶









如有任何疑問,按下方二維碼入群諮詢



若群滿,加 Alice 微信:

datacastle2017














哦,對了,我們給每個按要求完成學習的同學


準備了DC學院的學習證書





每個證書編號對應一個獨立身份信息






- 寫在最後 -





很多人問,學爬蟲有什麼用? 學完能做什麼?爬蟲好學嗎? 分四個點來說說我個人的體會:




1. 數據增長的趨勢是不可逆的,信息不對稱也會越發明顯,如何有效獲取互聯網的大量數據,來支撐有效的市場、輿論、產品、商業分析,得出有價值的信息,爬蟲將是一個基礎但又核心的技能。




2. 在前面學習的同學中,很多已經能夠寫基礎的分散式框架,有人爬取租房、電商商品、書籍、電影等數據進行了分析,有人做出了每天自動爬取新聞、天氣的Demo,也有人爬到了大量的「妹子圖」……




3. 未來屬於大數據和人工智慧,以 Python 為代表的編程技術在其中應用廣泛,獲得編程思維、掌握快速學習的能力,會大幅增加核心競爭力。爬蟲將是學習 Python 最好的入門途徑,沒有之一。




4. 很多人學了很多年 Office 還是玩不轉,而正確學習爬蟲,一天爬豆瓣,兩天爬知乎,也很輕鬆,所以爬蟲並不難,但是要有好的學習規劃,避開那些容易讓人放棄的坑。








點擊下方

「閱讀原文」

,開始掌握爬蟲技能








喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發者 的精彩文章:

符合語言習慣的 Python 優雅編程技巧
瘋狂吸金1600個億的拼多多,社交網路分析到底隱藏多少財富?

TAG:Python開發者 |