總結 | 反思 | 分享
學習Python爬蟲2個月了栏妖,一路驚喜一路bug调俘,苦辣酸甜不言中判族。今天正好周末躺盛,做一下階段性總結。
怎么是總結(2)形帮?因為(1)在這里呀:自學爬蟲一月總結
(還有看到這個標題大家也別太疑惑槽惫,只是參加了彭老師的征文大賽順便加上了而已233)
以下內容將圍繞這張圖展開:
一周叮、學習收獲
數(shù)據說話
從今年3月初開始,0基礎自學界斜。中間也是斷斷續(xù)續(xù)仿耽,因為還要上課「鬓保總共做了主要項目13個项贺,寫了博客16篇。目前在scrapy的進階階段峭判,準備學習分布式开缎。
4月11日開通了知乎專欄,現(xiàn)在剛好1個月林螃。
到5月14日 15:50為止奕删,各種數(shù)據
簡書文集:文章16,文集訂閱82疗认,瀏覽5.8k完残,評論130,喜歡123横漏,贊賞10
知乎專欄:文章16坏怪,專欄關注934,收藏2.0K绊茧,評論307铝宵,贊同659,贊賞4
github項目:star25华畏,fork 9鹏秋,watch 3
其它:收到不少盆友的反饋,有問如何學習爬蟲的亡笑,有在評論區(qū)支持鼓勵的侣夷,有大神提意見給建議的,有私信我要堅持寫下去的仑乌,值乎問問題的百拓,直接過來問聯(lián)系方式的233,甚至有專欄晰甚、公眾號求轉載的衙传,還有半夜兩點過來文章下面贊賞支持的。厕九。蓖捶。
我一個萌新,真的是受寵若驚氨庠丁俊鱼!
收到這么多反饋和鼓勵刻像,出乎意料,超級超級感動~
特此謝謝每一位關注并闲、支持我的朋友們细睡,寬容我的爛文、爛代碼還愿意提供寶貴建議的大神們帝火,鞠躬纹冤,筆芯,么么噠 \^O^/~
我會繼續(xù)保證文章的質量购公,同時努力學習出更高階萌京、更系統(tǒng)的內容。
還有這段時間宏浩,不僅學到了一些python爬蟲知識知残,對python編程開始有了接觸和了解,隨著學習也認識了自己的不足比庄。學習過程中認識了很多熱愛python求妹、熱愛數(shù)據科學的盆友和大神,從他們身上也學到很多東西佳窑。
二制恍、一些分享
其實本來想寫"經驗分享",可是想想編程界臥虎藏龍神凑,而且自己目前學的連冰山一角都算不上净神,這樣豈不班門弄斧(其實我也不造,當初哪來的耿直勇氣開知乎專欄@_@)
坑已然挖好不好回頭溉委,還是談談我的看法吧鹃唯,也算是回答之前一些盆友們的問題~ (一些觀點不成熟,大神們笑笑就好~)
1)如何學習python爬蟲
2)如何做好一個項目
3)如何寫好一篇博客
1)學習python爬蟲
1瓣喊、學習路線及資料推薦
這個問題有一些同學來問過坡慌,我在自學爬蟲一月總結提過一些但不是很全,現(xiàn)在進行一下補充藻三。
(當然以下僅是我個人的看法洪橘,每個人學習曲線、學習方式都不一樣棵帽,做個參考就好)
首先建議先對爬蟲做個大概了解熄求,推薦董大的Live:爬蟲從入門到進階
然后就是Python基礎學習,書籍可以《簡明python教程》或者《learn python the hard way》等,博客推薦廖雪峰老師的Python3教程 岖寞。單單為了學習爬蟲抡四,可以先跳過web開發(fā)部分柜蜈。
爬蟲基礎urllib,re,requests,BeautifulSoup,Xpath等等仗谆,崔慶才大神的博客:Python爬蟲學習系列教程指巡,單單看看這些基礎知識肯定枯燥,結合例子最好不過啦隶垮,于是可以循序漸進的看看上面例子藻雪。中間會需要一些http知識,可以看《圖解http》狸吞。
爬完文字爬圖片勉耀,爬完靜態(tài)爬動態(tài)。然后遇到Ajax網頁就需要抓包蹋偏,這個就講的不錯:爬蟲從入門到精通——網頁的下載便斥,順帶提一下這個專欄一些基礎知識很詳細。
爬到拉勾威始、豆瓣了枢纠,會獨立(對是獨立)分析網頁抓包,能夠繞過一些簡單的反爬黎棠,進行文件晋渺、excel、數(shù)據庫等簡單存儲脓斩,這時候就差不多爬蟲入門了木西。
然后可以學習爬蟲框架如scrapy、pyspider等随静。scrapy基礎推薦專欄木制robot的爬蟲世界八千,很詳細,而且值得一提作者自學成功轉行了燎猛,比較遺憾的是只介紹了幾篇叼丑。(目前我也在看scrapy,想匯總做一個較系統(tǒng)的系列扛门。不過慚愧鸠信,學習速度還是太慢了)
進階篇,最常見多進程论寨、多線程星立,selenium,PhantomJS,網上教程很散需要自己挖掘,還是回歸靜謐的博客葬凳。
其實進階的話還遠不止這些绰垂,在知乎上看到幾個思路:Python爬蟲進階?-知乎火焰,這個問題xlzd劲装、王家葳這兩個大神的答案很精彩。
然后董大(董偉明)在 python分享中初級爬蟲教程泛濫是否有其語法特征和生態(tài)環(huán)境的鍋?- 知乎 中提供的思路也非常不錯占业。
應該了解到要做的東西其實還很多绒怨,代理IP池、Cookies池谦疾、驗證碼南蹂、分布式、緩存念恍、調度六剥、反反爬等等,需要自己慢慢摸索了峰伙。
推薦幾個大神的博客:
簡書:蝸牛仔疗疟、treelake、qiye瞳氓、comboo(這家伙已經在分析框架的源碼了)
知乎專欄:一起學習python網絡爬蟲秃嗜、擼代碼,學知識顿膨、數(shù)據冰山锅锨、學習編程
笑虎大神的專欄"擼代碼、學知識"恋沃,文章質量很高必搞,且不限于Python爬蟲,里面甚至有一些Flask開發(fā)的介紹等等囊咏。
"數(shù)據冰山"人氣旺恕洲,偏重于數(shù)據分析挖掘,不過可以擴大視野不是梅割,爬蟲本來就是用來分析的嘛~~
還有"學習編程"是“數(shù)據帝”路人甲路人甲的專欄(大家都應該不陌生)霜第,除了學習借鑒數(shù)據分析的思維方式,里面偶爾會有一些學習編程的資料推薦户辞,不能太棒哦泌类。
此外還可以去github上找,很多不說了底燎,提一個有趣的反反爬倉庫:Anti-Anti-Spider刃榨,應該很多人都知道。
之后還可以分析框架源碼双仍,開發(fā)自己的爬蟲框架,甚至寫可視化的爬蟲枢希。
(當然這時你很可能已經不滿足于爬蟲了,學學web開發(fā)就挺好朱沃,搞搞數(shù)據分析機器學習也不錯)
當你已經"爬過萬水千山"苞轿,瀏覽器能get基本也能爬到茅诱,并且有能力開發(fā)自己的爬蟲框架,這時你就已經達到一種境界了搬卒,所謂"看山還是山瑟俭,看水還是水"。
更高級的還有搜索引擎秀睛,好遠啊不扯了>_<
目前暫時就是這些尔当,想到再補充莲祸,也歡迎大家評論區(qū)提建議~
2蹂安、我的學習方式
之前的總結說過了:自學爬蟲一月總結
總的來說:大體需求、項目驅動锐帜、知識點復查田盈、博客記錄、定時總結
3缴阎、其它允瞧,比如是否需要培訓
一句話:于心而言真的不需要,看個人蛮拔,小心智商稅
2 )做好一個項目
python爬蟲學習對實戰(zhàn)的要求很強述暂,除了get基礎技能,反反爬經驗也是必需在實戰(zhàn)中積累的建炫。
不過項目在精而不在多畦韭,入門后你會發(fā)現(xiàn)許多東西都是如出一轍,許多網站通過抓包調用API就可實現(xiàn)肛跌,這時候真的沒有必要再迷戀在抓取簡單網頁的成就感中了(這是不是爬蟲初級教程泛濫的原因之一233)艺配,你需要趕緊的進階,進階衍慎,進階WΑ!稳捆!
我覺得關鍵在于:如何設計學習路線赠法,通過較少的項目,循序漸進地進行爬蟲學習乔夯。
不過做好一個項目也不是那么簡單的事情期虾,細節(jié)的東西太多了,首先安裝都能成為一個坑驯嘱。不信你看镶苞,這是我安裝mysql遭遇的:
還好寶寶心理素質比較強,那如何做好一個項目呢鞠评,在明確好學習路線后茂蚓,有幾個點
1、基礎知識
基礎知識一般官網資料就可以了。有時覺得一些博客更淺簡易懂聋涨,而且很多東西是經過作者思考過歸納匯總的晾浴,可以借鑒。
2牍白、分析源碼和網站結構脊凰、制定抓取策略
其實我很少看審查元素,一般是直接分析源碼茂腥。這么做是因為狸涌,我們的瀏覽器訪問網頁時“看到”的東西,其實是源碼最岗。如果你是初學帕胆,不要怕密集恐懼啦,養(yǎng)成習慣后漸漸會變得很有意思哦般渡。
比如我在爬pexels圖片網時懒豹,發(fā)現(xiàn)其圖片接口就隱藏在源碼中;分析豆瓣發(fā)現(xiàn)其分PC端和移動端,兩者網頁不太一樣驯用,而且分析發(fā)現(xiàn)不登陸的話脸秽,某些數(shù)據是無法爬下來的;分析拉勾時發(fā)現(xiàn)了它的頁面變動的規(guī)律,一個障眼法22333 蝴乔。
還有網站結構记餐,主要是找出url規(guī)律和網站反爬策略,對于有一點前端經驗的盆友來說淘这,簡直不是事兒呀剥扣。
然后就是指定爬取策略了,可以根據html結構選擇最合適铝穷、高效的數(shù)據提取方式钠怯,是re,BeautifulSoup,還是Xpath?
3曙聂、先自己做晦炊,有自己的想法
我的話最初兩個例子是照著崔慶才大神的博客來的,后面就全自己找了宁脊。個人覺得在大概摸清爬蟲程序的套路后(一兩個例子)断国,遇到一個項目,自己想思路榆苞,自己寫程序稳衬,實在不行再借鑒別人的方法。
紙上得來終覺淺坐漏,絕知此事要躬行薄疚,別人的收獲畢竟也只是別人的碧信,不親自探索,還是很難真正學到東西街夭。
4砰碴、它山之石,可以攻玉
有時候我們借鑒別人一些好的想法板丽,將其運用于我們的項目中呈枉,然后可以事半功倍。(感嘆互聯(lián)網的開源精神埃碱、開放共享環(huán)境就是棒呀) 但并不意味著將復制粘貼就完了猖辫,至少得理解一下原理和思路吧,加上自己的想法那更好啦~
我的博客前兩篇乃正,雖然是跟著崔慶才大神的博客學習的住册,但是真正爬取的時候并不是一步步照搬婶博,而是自己適當改了下; 在Scrapy之斷點續(xù)爬(存入MySQL)中瓮具,斷點續(xù)爬想法來自知乎,但發(fā)現(xiàn)實例很少啊凡人,于是自己寫程序實踐了它名党,參考了大神的博客的一小段,但覺得累贅根據情況改了一下挠轴,然后又查資料發(fā)現(xiàn)了另一種python中操作mysql的方法传睹。
你看,大概就這樣岸晦,有點github上fork思想的意味欧啤?
5、尋求最佳方案
這里就不贅述了启上。尋求解決問題新途徑邢隧,有沒有別的方式呢,怎樣實現(xiàn)最簡單有效美好冈在?不斷改bug倒慧,不斷提需求,再改包券,直到滿意為止纫谅。(記得當初做那個pixabay圖片下載器也改了好久)
6、提高搜商
何為“搜商”溅固,就是搜索定位有效資源的能力付秕。簡直程序員必備技能啊。學習過程中各種bug侍郭,遇到問題首先自己解決最靠譜询吴。
目前網絡這么發(fā)達俩垃,百度、知乎汰寓、谷歌口柳、知乎、簡書有滑、stackoverflow跃闹、CSDN等等,一般的小坎還是容易過得去的毛好。
逛逛別人的博客望艺,或者瀏覽某個社區(qū),偶爾還會發(fā)現(xiàn)一些好的知識點和思路呢肌访。(之前在stackoverflow上發(fā)現(xiàn)個神奇的語法糖找默,于是拿來用了,爬教務網僅花代碼30行左右)
7吼驶、善用工具
不說太多惩激,IDE用Pycharm就不錯,抓包fiddler蟹演,數(shù)據分析BDP簡單粗暴风钻,數(shù)據庫可視化Navicat等等,利用工具提高開發(fā)效率。
8酒请、學會提問
來自知乎路人甲骡技,很贊:如何向別人請教問題才能得到解答回復?
3)寫好一篇博客
1羞反、明確主題
2布朦、突出亮點、有自己的想法
建立在做好項目的基礎上昼窗,不贅述是趴。
3、充實內容
需要準備好各種材料膏秫。
4右遭、邏輯清晰
我一般采用“總分總”模式,分點展開缤削,文末最后簡要總結窘哈。覺得這樣不僅僅邏輯清晰,也可以鍛煉自己歸納總結的能力亭敢,同時查找的時候也非常方便:D
5滚婉、語言鮮明
哈哈這一點上我可能是假的段子手→_→
但,還是建議嚴肅一點來寫技術文帅刀,畢竟让腹,抖機靈也是要看天賦噠:D (逃~
6远剩、尊重版權
引用別人的東西,最好注明來源骇窍、作者瓜晤。
7、產品意識
這一點最初是在彭老師的文章里看到的腹纳,很有意思(目前找不到了orz)痢掠,大概意思是:如何最小化的代價做出一個東西,如何擴展形成一個系列體系嘲恍?
其實與爬蟲學習路線設計緊密相關足画,形成體系后也益處多多,若一個完整的知識體系佃牛,復習起來基本不費力淹辞?
三、總結反思
1俘侠、不足之處
首先基礎存在很大漏洞象缀,才發(fā)現(xiàn)其實前面爬蟲中,根本就不需要多少python知識的兼贡,基本的數(shù)據結構攻冷、文件操作娃胆、類與模塊遍希、函數(shù)和面向對象都差不多了。到了Scrapy這一塊里烦,裝飾器初露水面凿蒜,各種中間件寫起來就費力了,目前惡補基礎中胁黑。
其次是浮躁废封,感覺是沒有以前靜的下心,是因為夏天到了還是進階本來就麻煩丧蘸?
最后說一下漂洋,爬蟲真的是上手快精通難,越到后面需要考慮的東西就越多力喷,爬與反爬之間的博弈愈發(fā)強勢刽漂,做一個項目花時間越來越多了,挺累弟孟。
2贝咙、進階的一些想法
肯定得先補好基礎啦,然后分布式希望月底之前拿下來拂募,暑假想學flask搭個博客,之后還想學算法(貌似時間不夠用啊(?Д?)?)
四庭猩、我的爬蟲博客系列
前兩天有位大神在簡書下寫了評論窟她,很慶幸與其交流了一下,大神的建議很有用蔼水,同時也愈發(fā)感覺進階之路漫漫震糖。
之后,居然有人說我的博客越來越成體系了趴腋,很驚訝试伙。這一說還真萌生了將其擴充成一個體系的想法,然后就是下面這樣:
分四個階段:
入門篇于样、框架篇疏叨、進階篇、源碼分析篇
<入門篇>
1穿剖、一行正則抓取糗事百科
2蚤蔓、百度貼吧
4糊余、破解pexels高清原圖
7贬芥、拉勾網爬蟲(一)
8吐辙、爬豆瓣張國榮日記(一)
<框架篇>(部分待探索學習)
主要介紹Scrapy
3、Scrapy爬多級網頁及圖片(ImagesPipeline)
4威沫、Scrapy抓手機App數(shù)據(存入MongoDB )
5贤惯、Scrapy實現(xiàn)斷點續(xù)爬(存入MySQL)
6、Scrapy之代理ip棒掠、ip池
7孵构、Scrapy之Cookies、Cookies池
9烟很、Scrapy-redis構建簡單分布式
10颈墅、Scrapy-redis較復雜的分布式
<進階篇>(待探索學習)
1、多線程
2雾袱、多進程
3恤筛、多線程+多進程
4、selenium谜酒、PhantomJS破解JS網頁
6叹俏、驗證碼破解
7、視頻類爬蟲系列
8僻族、大規(guī)模電商爬蟲系列(淘寶|京東|亞馬遜)
9粘驰、自己開發(fā)個分布式爬蟲框架(難)
10屡谐、寫可視化的爬蟲(難)
<源碼分析篇>(待探索學習)
1、Scrapy源碼分析
2蝌数、requests源碼分析等等
(以上也只初步構想愕掏,不能保證完全完成)
按順序學習,點亮到進階篇倒數(shù)第三個顶伞,應該可以找得到工作了吧饵撑?
若如期找到工作,會不會很幸福呢
五唆貌、最后的總結
不得不說滑潘,學習爬蟲真的很真像升級打怪。需要我們不斷對自己提需求锨咙,解決掉一個又一個問題后语卤,提升自信心。整個過程涵蓋解決問題酪刀、總結歸納粹舵、表達展現(xiàn)、形成系列等環(huán)節(jié)骂倘,但其實深入思考眼滤,發(fā)現(xiàn)最終都可以歸結為一個思維方式的終極問題。
面對一個問題历涝,如何定位有效資源惊完,如何快速熟悉一個領域烛缔,如何制定初步方案颠悬,如何解決執(zhí)行中出現(xiàn)的問題窑滞,如何不斷優(yōu)化、維護并打造一款產品系列......這些思維方式电爹,其實是放之四海而皆準的。
慣用總結套路就不來了料睛,放個圖
16篇文章丐箩,一個爬蟲系列,一篇總結文恤煞,加一個思維導圖屎勘。勉強算有理有據,邏輯清晰居扒?算不算對python表了個白概漱?
如果這都不算愛
那我
我就
就
就
。
喜喂。
瓤摧。
竿裂。
。
照弥。
腻异。
。
这揣。
悔常。
抖個機靈吧~
(實打干貨沒人看,抖個機靈千百贊给赞?)
總是套路留人心啊~
都讓一下机打,我要放大招了,哼~
表白文藝范片迅,怎能少了詩姐帚?不說了,總之
路漫漫其修遠兮障涯,吾將上下而爬蟲
洛陽親友如相問罐旗,唯有python在心中