這是一篇純屬個人經驗,內含吹水的學習總結。網上關於爬蟲的教程有很多了,但是沒有乙個完整的學習方案,這篇文章就是對於新手入門給出一套完整的學習方案。如果是同樣有自主學習能力,對python了解不多,對爬蟲一無所知的小白,看完這篇文章一定能有所收穫。
最近大概花了7天的時間快速的對目前流行的python爬蟲工具進行了學習。掌握了爬蟲相關的基本知識,包括requests、urllib、beautifulsoup、css選擇器,以及當下很火的pyspider、scrapy框架、selenium模擬器的基本使用方法。
完成了python爬蟲入門,目前能在各種文件的幫助下完成小規模爬蟲的編寫,對於**反爬也能使用驗證碼識別、模擬登陸以及**設定三種手段來解決。不過程式設計速度不是很高,程式設計之路走不得捷徑,日後還需不斷coding。
接下來的一段時間打算先暫停爬蟲方面的學習,轉向對linux系統的學習,因此以此文記錄學習過程中的心得體會,算是對這7天學習的乙個總結。
不得不說在一開始走了不少彎路。我以blog起步,當時調了乙個還算嚴謹的blog(自認為,現在看來真的寫的一般)就一路悶頭幹,跟著部落格一步一步學習,部落格缺少的就google。這個過程中很大的問題在於知識不夠系統,知識的順序並沒有嚴格的梳理過,我時常要查閱大量的資料才能把缺少的東西補全,而這個過程浪費了不少時間。並且有些地方我不得不自己嘗試來推理出某個函式、某個變數代表的原意,可想而知學習質量不高。
2.2.1 重新決定資料**
2.2.2 學習方式
這部分依照《python3網路爬蟲開發實戰》的章節順序談談我個人的體會。
先提幾個"global suggestions":
英文就英文,不要用翻譯,準確性值得付出
官方文件永遠是最好的答疑工具,但是需要的耐心
只進行必要的編碼嘗試,動腦不如動手,因為大量知識湧來容易盲目嘗試,不加思考的嘗試反而會浪費時間
不要為了練習而練習,練習是為了理解**。如果使用pycharm,ctrl+b值得擁有
2.2.3 基本庫
前幾章主要介紹基本庫的使用,這部分我認為要把精力放在對爬蟲過程的理解上,糾結於具體api是沒有意義的,api的熟練掌握可以在專案實戰中慢慢掌握,初期可以看著文件寫。而抽象理解是珍貴的,把api代表的抽象意義抽取出來進行梳理,這會是後面幾章的必要前提。
2.2.4 解析庫
爬蟲的流程粗略來講就是得到**,抓取**上的內容,解析內容提取新的**和需要的資料。因此解析是爬蟲編寫必不可少的一部分。解析簡單來講就是對文字內容的篩選,這個事情其實就是正規表示式經常幹的。因此正規表示式可以用來進行解析。但是用起來很麻煩,所以有了各樣方便好用的手段來解析文字。主流的方法包括xpath、css選擇器。我推薦css選擇器,在體驗過xpath、正則、css選擇器後,css勝出。
學習它的難點:
在於我沒接觸過前端,需要補充大量前期知識才能知道怎麼去學習css。
css語法資料css表示式寫完後的驗證需要合適的方法,這裡我推薦使用瀏覽器自帶的網頁分析工具。按下你的f12,ctrl+f開啟搜尋框,大部分瀏覽器都是支援css選擇器表示式進行搜尋的。之所以推薦這種方式是因為之後再爬蟲的編寫時,這就是你書寫css選擇器的流程。
除此之外最重要的:一定要先學會如何解析,否則之後的實驗會造成時間浪費。
2.2.5 資料儲存
這節分兩部分:
檔案格式:csv、txt、json,建議不要跳。跳了還得回頭學,都是基礎知識。
資料庫的使用。看個人需求,如果不需要的話可以跳過,不過對於關係型資料庫和菲關係型資料庫的概念了解一下不吃虧。
2.2.6 ajax資料爬取+動態渲染頁面爬取
這兩個都解決同乙個問題:動態載入內容怎麼爬?
動態渲染頁面爬取給出的解決方案是使用瀏覽器模擬器,模擬人操作瀏覽器的過程來實現爬取動態內容。不得不說還挺慢的。畢竟瀏覽器得一步一步來,而ajax資料爬取直接構造url鏈結就申請資訊了。
兩者都得會,前者得找出鏈結規律才行,很難而且有的**根本沒有規律;後者更簡單,適用範圍廣。這部分不難,書上寫的非常明白,但是很費時間,因為需要嘗試不同的**才能體會到兩種方式的區別和在使用中的優缺點。這裡如果之前的css選擇語法沒學會會很浪費時間。耐心看,**敲一遍形成模板,以後直接用就好。
2.2.1 **的使用
爬蟲必不可少的一部分,有的**會對異常大量訪問的ip進行封禁,這時候就要**來破局了。
這部分分的中**池部分不想看可以跳,畢竟現成的**池一大堆,api也很簡單。
他推薦了一些付費的**,我沒有試,使用的是免費**,可能實驗中規模較小,速度上沒有不能接受。
這一部分是**使用的基礎,之後要學習的scrapy框架也會涉及**設定的知識。
2.2.7 模擬登陸
我得說這部分我急功近利了
只學習了基礎模擬登陸的方法,這個篇幅很小不難學。
之後還有更好用的cookie池,這章一大部分都在講這個,考慮到這是第一遍學,cookie池也不是必要的一部分,暫時跳過這部分,下學期專案上了再來處理。
爬蟲框架簡單來講就是爬蟲專案的半成品,構建乙個完整專案離不開上面基礎知識的支援。即使不用框架仍能寫出爬蟲程式,但是何必自己造輪子呢?框架也不是萬能的,框架只是對上述基礎能力的合理結合,爬蟲的核心邏輯仍然需要自己來完成,並不是給出**就能生成令人滿意的爬蟲。
2.3.1 pyspider:乙個簡單但好用的爬蟲框架
我個人也推薦新手使用pyspider來學習爬蟲,因為scrapy的除錯資訊真的是不夠明確,除錯難度上還是pyspider更低一些。
2.3.2 scrapy:工程級爬蟲框架
相比pyspider,scrapy複雜了不只一星半點,也沒有影象介面,純粹命令列操作,**在本地進行編輯。正因為複雜,更要好好理解框架結構才能用起來得心應手。
《python3網路爬蟲開發實戰》對scrapy有詳細的描述,但是我還是建議仔細閱讀官方文件,官方文件能提供更全面的資訊。
對於scrapy,我想對喜歡鑽研技術的人來說它的複雜不會成為扣分點,就如linux和windows,複雜才有探索的樂趣。另一方面scrapy真正使用後會覺得在資料的篩選方面比pyspider好用太多,複雜是為了更好的支援使用的簡便。而且雖然複雜,但是只要開發完成第乙個爬蟲,之後開發速度就快不少,畢竟都是code層面的東西,重複的有很多。
雖然我學習爬蟲的出發點只是想在專案中進一步學習python,但是不得不說爬蟲是很好玩的工具,學起來很有意思。本篇主要講的是python爬蟲的入門方法,具體的技術細節沒有涉及,一是相比前輩們自己還太菜,二是爬蟲技術部落格已經很多了再重複也沒有意義。學習經驗這個東西也非常主觀,小馬過河的故事大家都聽過,各位看官結合自己實際情況來採納。
文章中有錯誤的地方請指正,有補充建議請提出來,不要客氣啊。
Python爬蟲入門
今天看了菜鳥教程的python教程,準備做個小作業寫個爬蟲程式。其中主要涉及到基本語法 正規表示式 urllib和re兩個模組。import urllib 載入模組 import re defgethtml url page urllib.urlopen url html page.read ret...
python爬蟲入門
這幾天閒的無聊想做乙個爬蟲來爬取一些 正經 首先選擇用python作為爬蟲的語言。但是沒有接觸過python怎麼辦呢,只能從頭開始學了。python學習位址這個是廖大神寫的乙個python入門,個人感覺寫的非常不錯,在粗略的學習了一遍之後感覺可以開始我的爬蟲之旅了。目標 抓取中妹子的儲存在本地 接下...
python爬蟲入門
初學者要學會基本的爬蟲 先要安裝包requests requests的安裝 開啟這個 在這個 上面有很多 python 的第三方庫檔案,我們按 ctrl f 搜尋很容易找到 requests 如下圖,我們將第乙個資料夾,也就是 requests 資料夾複製到 python 的安裝目錄下的 lib 目...