在現(xiàn)狀和想要達(dá)到的目標(biāo)之間,總是有一條大河。大部分人花費(fèi)了巨大的精力在水流里掙扎,還沒能接近目標(biāo),就已經(jīng)被湍急的水流沖走了。然而,總有少部分人能乘著小船,直達(dá)對岸。
10年前,從普通學(xué)校畢業(yè)的我進(jìn)入了一家小公司,傳統(tǒng)運(yùn)維的工作重復(fù)性太高,特別枯燥。
于是我下定決心決定擺脫這種困境,想通過編程來改變現(xiàn)狀。于是開始學(xué)習(xí) Python,當(dāng)時(shí)也非??啾疲刻煸缟?點(diǎn)起來看視頻看書做練習(xí)。
3個(gè)月之后,我跳槽了,薪酬是之前的兩倍。
后來,我得到了進(jìn)入搜狐這樣公司的機(jī)會,一路成長為社交產(chǎn)品的服務(wù)端負(fù)責(zé)人,也進(jìn)入了一線互聯(lián)網(wǎng)公司的技術(shù)圈子,有了更高的視野。
學(xué)一門新的技術(shù),從而獲得新的機(jī)遇。與其說是一種能力,不如說是一種方法。
在這里,把我的實(shí)踐過的經(jīng)驗(yàn)和心得分享給大家。
轉(zhuǎn)行路上的3個(gè)坑
坑1:無盡的刷初級教程
爬蟲是入門簡單,深入難。
現(xiàn)在在知乎、微信公號上的大部分爬蟲教程都是初級教程,大家寫著玩的,真正公司里用的東西不會發(fā)出來。
無盡的刷這種初級教程,剛開始會有成就感,后來就是無限的重復(fù),會讓你的水平一直停留于入門級,無法提高。
坑2:代碼一失效就哭天喊地
你在書里、視頻里、教程里看到的爬蟲代碼是很容易失效的。
要爬取的網(wǎng)站每周都會更新迭代。而且許多大公司都有自己的反爬蟲團(tuán)隊(duì),一旦發(fā)現(xiàn)用的多的爬蟲策略,就會禁止你的訪問。
如果你缺乏自己去攻防反爬的能力,就只能在代碼失效時(shí)措手無策、哭天喊地,卻找不到辦法自己去解決。
坑3:不了解 Python 多進(jìn)程并發(fā)程序
如果沒寫過爬蟲的話,很可能是沒寫過 Python 多進(jìn)程并發(fā)程序的。我接觸的程序員,其中好多人歲數(shù)都已經(jīng)很大了,都沒有寫過一個(gè)并發(fā)的程序,而是一直在寫業(yè)務(wù)邏輯。
而為了提升爬蟲效率,關(guān)鍵點(diǎn)就在于要了解:并發(fā)、并行、什么時(shí)候用多線程?什么時(shí)候用多進(jìn)程?什么時(shí)候用協(xié)程?尤其像 Python 是動態(tài)語言,它有 GIL 的情況下,怎么去做處理?什么時(shí)候是 IO 密集型的,什么時(shí)候是 CPU 密集型的,想提升效率怎么去處理?
如果不是科班出身的話,理解起來會有很多的誤區(qū)。在處理如何更快速更高效的爬取網(wǎng)站的時(shí)候,就會遇到問題。
如何轉(zhuǎn)行爬蟲工程師
1. 積累項(xiàng)目實(shí)戰(zhàn)經(jīng)驗(yàn)
我曾經(jīng)面試過一個(gè)同學(xué)A,是某個(gè)培訓(xùn)班出來的。在我問他簡歷上項(xiàng)目的技術(shù)細(xì)節(jié)時(shí),他支支吾吾的答不出來,我一看這是沒做過項(xiàng)目啊,沒做過你就別浪費(fèi)我時(shí)間了。
最后他跟我說實(shí)話,是培訓(xùn)班偽造的簡歷,問我「能不能不要工資在這實(shí)習(xí)?」
我說「這事還是別了,你這項(xiàng)目經(jīng)驗(yàn)太弱,還有好多東西要補(bǔ)?!?/p>
然后我讓他至少先自己花一星期補(bǔ)補(bǔ)基礎(chǔ),結(jié)果他嫌一星期太長了,他想馬上就找到工作。(攤手)
其實(shí)我覺得他的問題就是出在心態(tài)上了。如果能堅(jiān)持把項(xiàng)目啃下來,解決了開發(fā)過程中的各個(gè)關(guān)鍵點(diǎn),能直接上手去做公司的事情的話,找到工作就是水到渠成的事情了。
2. 寫的質(zhì)量好的項(xiàng)目可以放 Github
如果你認(rèn)為你的代碼寫的不錯(cuò),你可以放在 GitHub 上,寫上你所有的解決問題的流程。
但如果你寫得很爛,我認(rèn)為面試官看了可能不是一個(gè)加分項(xiàng),你還不如不寫,因?yàn)槊嬖嚬贂矗瑫l(fā)現(xiàn)你的代碼暴露了很多問題。
3. 技術(shù)總結(jié)可以放到博客或 Gitbook
你在真正做項(xiàng)目的時(shí)候,是會遇到一些問題的,在解決之后可以把這個(gè)過程總結(jié)出來,寫成一篇筆記。這是對你的知識體系的一個(gè)完善,哪怕是再小的點(diǎn),記錄下來也是有意義的。如果不方便發(fā)出來,也應(yīng)該自己總結(jié)寫下來,不然過幾天就忘了。
積累的多了,這些學(xué)習(xí)筆記就形成了一個(gè)你的知識體系,這時(shí)候可以在 Gitbook 上作為一本電子書開源出來。如果別人看到你了,別人可能也就會聯(lián)系你來做這份工作了。
爬蟲工程師崗位要求掌握哪些?
初級爬蟲工程師
* 爬蟲方面:熟悉爬蟲框架,熟悉 xpath、正則表達(dá)式,有爬取經(jīng)驗(yàn),了解常見策略,能優(yōu)化爬取效率
* Python基礎(chǔ):尤其是數(shù)據(jù)結(jié)構(gòu)的考察,知道怎么折騰數(shù)據(jù)、并發(fā)編程
* 前端編程:熟悉 HTML,CSS,JS
-
工程師
+關(guān)注
關(guān)注
59文章
1571瀏覽量
68592
發(fā)布評論請先 登錄
相關(guān)推薦
評論