爬蟲學習階段性總結css
爬蟲的基礎知識我打算就先學到這裏了,之後須要用起來的時候再去看看相關文檔和谷歌,作一個小量級的爬蟲程序問題不大,對於分佈式的和增量更新去重等需求就直接上框架,用別人的輪子仍是蠻爽的。html
簡單小量級:requests+pyquery前端
JS渲染太多的:selenium+Phantomjspython
框架:Pyspider或者Scrapy,我的比較喜歡Scrapy,主要是pyspider的文檔真的少,二者框架差很少的,前者有WEBUI,後者是命令行模式,看喜歡哪一個就用哪一個吧。git
學習資料總結:程序員
第一部分基礎github
1. 環境搭建:web
建議直接用虛擬機ubuntu(自帶python2和3),terminal敲代碼就能夠了正則表達式
2. python基礎(0基礎的看這個):數據庫
http://www.runoob.com/python3/python3-tutorial.html
3. 看完上面這個以後看下面這個:(感受做者寫到錯誤調試那一章以後就不是太好了,感受是一股腦東西給你砸過來)
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
擴展閱讀:
《簡明python教程》
https://molun.net/byte-of-python-2017-new-translation-edition-release/
4. Git教程
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000
這個寫的蠻好的,看這個就夠了,後續須要的項目代碼能夠從github上拷貝,在上面也有不少的爬蟲項目能夠參考,注意看star和fork數量,能夠參考時間比較新的(push時間),算是一個挺好的資源來源(比本身百度去搜索的爬蟲不少都過時了,或者網站策略 更新了,對新手不太友好,會浪費比較多時間)
第二部分爬蟲:
1. 崔慶才博客和教程視頻:
教學視頻在youtube有,我也存到本地網盤了。
視頻內容都挺好的,一步步作下來,基本也就入門了爬蟲了
2. 閱讀相關的基礎知識:
上面作爬蟲的時候會常常遇到一些概念(前端),崔是作前端的,因此有些講的很快,不懂的時候建議把視頻暫停下來,看看下面這些概念
HTTP/HTML/AJAX/JSON/CSS/XPATH
教程均可以在這裏找到:
看重點就能夠了,不須要所有都看,好比HTML就看一下基礎元素屬性和總結就行了,須要用到其餘的時候再補
3. 數據庫的基礎知識:
教程均可以在這裏找到:
MySQL/MongoDB/Redis
同理,看一下基礎應用就行了,簡單爬蟲要求並不高,後續再深刻學習。
4. 閱讀相關的庫文檔,按照庫文檔的理解敲敲例子
這裏包括請求庫,解析庫,存儲庫和工具庫
大概是下面這些(資料經過百度或者谷歌都能搜到)
requests/re/selenium/lxml/beautifulSoup/pyquery/pyspider/scrapy/pymql/pymongo
重點以爲應該看一下幾個解析庫,好比bs4/pyquery/lxml和用一下css/xpath語法,熟悉一下每次篩選以後是什麼類型的數據,以及怎麼遍歷,取出本身想要的數據,每一個例子最好都使用print(type())打印一下類型,加深理解。
第三部分爬蟲練手資源:
1. 知乎分享的合集(有挺多不能用得了,可是能夠參考一下名字,搜一下最新的文章)
https://zhuanlan.zhihu.com/p/27938007
2. 崔慶才視頻中的幾個項目
不須要太多。
第四部分其餘經驗:
1. 爬蟲容易寫出知足感,因此不要在這上面花太多時間(其實我須要數據的時候仍是找其餘人要的,因此加個QQ羣,程序員都是樂於助人的),適可而止就行了,除非要在爬蟲這個職業上作長期發展
2. 加多幾個靠譜的python或者爬蟲QQ羣
3. 多作筆記,多寫代碼(寫個爬蟲可能只須要1個小時,可是寫個文章就須要2個小時,在寫文章的過程當中加深理解,跟讀書的時候作筆記是同樣的)
4. 至少要作到如下幾個爬蟲例子:
(1) requests+正則表達式爬取靜態網頁(最好是加入搜索關鍵詞的),並加入多進程,數據庫存儲,文件下載(圖片和文本)
(2) requests+lxml+xpath爬取靜態網頁,其餘同第(1)點
(3) requests+bs4+css/xpath爬取靜態網頁,其餘同第(1)點
(4) requests+pyquery+css爬取靜態網頁,其餘同第(1)點
(5) selenium+Phantomjs爬取靜態網頁,其餘同第(1)點
(6) pyspider+ selenium+Phantomjs爬取靜態網頁,其餘同第(1)點(靜態網頁用pyspider爬感受大材小用)
(7) scrapy爬取動態網頁,其餘同第(1)點
(8) 找一個封IP和cookies的網站(好比微博),用scrapy爬取,把幾個pipeline都用起來,而後加入分佈式爬取(找3個雲服務器就ok了,一個發佈任務,兩個爬取),其餘同第(1)點
5. 堅持,適可而止
第五部分 其餘資源:
1. 反爬文章參考:
這個寫的很全面也挺棒的:
http://www.freebuf.com/articles/web/137763.html
這是一個實例演示,也不錯:
http://www.freebuf.com/news/140965.html
這個破解例子不錯:
http://blog.csdn.net/bone_ace/article/details/71056741
2. 一個完整的爬蟲+前端界面(真的挺棒的!)
https://github.com/GuozhuHe/webspider