python分享中初級爬蟲教程泛濫是否有其語法特徵和生態環境的鍋?
python分享中爬蟲這一塊的分享泛濫已經是不爭的事實了,而且大部分都是靜態爬蟲,用到ajax的都很少,涉及到並發和非同步的幾乎沒有。這一現象有沒有可能是因為語法簡潔,入門門檻低,各種第三方庫使用方便導致的。
requests庫,由小胖墩變大帥哥的kennethreitz開發,號稱HTTP for Humans,簡潔好用。
Beautiful Soup庫,將煩人的lxml解析轉變為面向對象的方式。
scrapy庫,連原理都不用搞清楚就可以獲得一個相對高性能的爬蟲。
其他語言的生態環境中沒有類似的庫嗎?由爬蟲入門是好是壞呢。
其實一開始就有同學邀請我回答,昨天 @Manjusaka 提到了我,本來我就想來點點贊就算了,結果在床上刷了會知乎,又刷出來3篇爬蟲文章和一篇某本爬蟲新書的推廣內容,心情不好,來說說我的分析和理解,想直接看結論的跳到第四點。
1. 為什麼python分享中爬蟲這麼泛濫?
Google、百度這種搜索引擎的爬蟲是c++寫的,為什麼大家說爬蟲以Python居多,鮮有人分享c++版本的文章?
第一個點就是題主談到的語法特性。Python是一個非常「高級」的語言,它表達能力很強,語法簡單,非常易學和理解。一般有其他語言基礎的同學一個禮拜就可以用於工作,編程小白通過看書、動手實踐1-2個月就可入門。我想10個自學的人中有8個可以堅持下來。如果是學c++呢?10個人裡面能有一個堅持下來的就不錯了!不信來試試。
高級的語言很好,框架也很好,比如用Flask或者Django能讓一個初學者很快的做出一個像樣的網站;用Scrapy之類的爬蟲框架可以讓爬蟲小白10分鐘實現一個抓取豆瓣的程序;用Celery可以讓一個對後端架構了解甚少的同學運行起一個分散式的抓取集群...
Python是一個非常容易讓人YY和產生幻覺的語言:好像用Python寫個小腳本就已經會編程,是一個程序員了,成就感爆棚的感覺好好啊,對吧。尤其是有些無良的、別有用心的培訓機構和自媒體吹噓引導,讓很多人感覺花1-2個月就可以迎娶白富美,走向人生巔峰了。這就是智商稅
昨天看到了tombkeeper老師一段話:
「知識付費」有兩種:一種是讓你學到知識,一種是讓你以為學到了知識
好吧,我那個爬蟲的5.0星Live應該是第一種,其他的培訓我就不知道了。
我開個Live只敢叫做「爬蟲從入門到進階」,不敢用「精通」,最多叫做「熟悉」。反正這年代吹牛逼也不上稅,打個臉可以道歉,誰有能力誰上吧,環境就是這樣。
第二點生態環境。只要是圖靈完備的語言都可以實現爬蟲功能。Python為啥看起來「更」適合寫爬蟲呢?
1. 從HTTP請求、HTML解析、並發編程、非同步編程到動態網站抓取方案等方面都有非常好用的庫。回答樓主的問題,其他語言也都有一些對應的庫,只是沒有Python這些庫知名和好用罷了。
2. 良性循環,爬蟲技術分享文章很多,非常利於新人學習爬蟲技能。
3. Python是一個膠水語言,在不同領域都有涉獵並且做的都還不錯,這個生態可以讓大家學一門語言干多得多的事情,其他語言在這方面都沒有Python有優勢。
2. 為什麼最近爬蟲分享變多了?
爬蟲是種很古老的技能,知乎也都6年了。為什麼最近才泛濫?
1. 從微信公眾號到去年知乎Live、知乎專欄、分答、值乎,再到上段時間的小密圈,知識變現已經被驗證成立。我的書在知乎做宣傳就是一個成功的例子(此處我的臉大了一些),大家看到了機會,各路英豪蜂擁而至。
2. 一些公司和營銷號轉戰知乎,小白錢最好騙,人家本來也沒想掙真的是這個行業圈子裡面的人的錢。沒事大家關注一下,有些文章明顯不是個人發的,Python是很講究語法和縮進的,不熟悉Python很多例子根本跑不起來,你們有沒有發現有些文章的代碼都是圖片?雖然知乎的編輯器提供的代碼語法高亮功能很一般,但是我非常懷疑這些文章是編輯的精選,這樣既好看,也不會出現代碼格式問題,對於非技術人員很友好呢。
3. 分享者希望獲得更多關注和鼓勵。很多同學沒有個人博客,知乎也是一個好的選擇。以前有點技術底子的同學都會選擇個人博客,至少託管在github。蒙頭在一個角落寫博客除了友鏈和有人主動搜索以外不容易被人看到,久而久之就容易放棄。現在很多同學包括我都開始順應時代,出來營銷和互動了,也有開發者頭條這種技術分享平台,我當然歡迎更多的同學選擇這種不寂寞的方式來做分享。
4. 想做分享的同學受限於技術能力,很尷尬。而爬蟲是一個很簡單也很容易看到效果的方式,如果有idea,還可以做一些有趣的技術分析,這都能引來大片的贊和關注,繼而可以靠發軟廣之類的方式掙錢呢。
3. 為什麼初中級教程占絕大多數?
每一個出來分享的同學都要學習下如何營銷,思考下如何獲得更多的曝光、收藏和關注,這是一門很大的學問。初中級教程這麼吃香,我總結三點:
1. 知乎都是碎片化的瀏覽的特性。本來知乎是一個娛樂場所,討論技術也不是不可以,一看就懂的那種當然最受歡迎啦。
2. 受眾分布。無論哪個語言,中高級開發者都是相對很小的一撥人,你看我寫的一些技術文章,大多幾十贊,最多幾百贊。我目前就一個超過1k贊的文章,好憂傷,剩下幾百的贊的文章中大部分也不真的是純技術類的,另外很多人覺得看的難半路就放棄了更沒有點喜歡的衝動了。初級教程就不是了,有美女圖,有表格,還有點不知道真的能不能跑起來的代碼(反正大家大部分也不會真的去運行一下),顯得「乾貨滿滿」呢?這讓我們這種用心分享的人情可以堪?有些東西我又不是不會,原理就3條:追熱點、吸引眼球、話題性(耐撕逼)。你看我最近出來懟人的文章,獲得的贊遠比真的花時間寫技術分享拿到的贊多得多,這麼做下去最後還能能掙得盆滿缽滿啊,但是這太low了,底線在哪裡啊,我還得在圈子裡面混,這麼做了以後就讓圈內人真的看不起了。
3. 初中級內容對分享者要求低,文章質量要求少,可量產。寫點乾貨試試?我反正不敢保證三天能寫出來一篇。
4. 點贊關注的同學很大程度上是小白,也就是並不是程序員,覺得有意思和難,但是這給所有爬蟲分享者和我們營造了一個假象,就是爬蟲類文章受歡迎。這是病,得治。
4. 爬蟲分享泛濫是不是Python的鍋?
回到正題了,顯然不是。 @xchaoinfo 說的很好:
天下熙熙皆為利來,天下攘攘皆為利往。
殺人者罪,利刃何罪之有?
由爬蟲入門Python當然是一個很好的方式,但是這不是唯一的方式。
@DCjanus 說的也很好:
爬蟲入門不可怕,可怕的是停留在舒適區。
入門了別忘了繼續進階,路還很長。那些在舒適區的同學,看到本回答,不知道能不能叫醒你們,擦擦(ˉ﹃ˉ)
那鍋在哪?
@laike9m 點到了正題:
歸根到底是人的鍋。
最壞的是整合這些爬蟲文章的社區和專欄背後的擁有者
我看了很多知乎上分享爬蟲文章的,有些同學確實是在分享自己的技術成長,他們把知乎專欄作為自己的技術博客,用來記錄自己對爬蟲這件事情的理解,我很支持。不能說大家覺得泛濫就誰也不要再發了,還是得讓人說話,讓人做自己的。之前有人發文對我說的亂象提出意見,我不也是沒有再反駁嘛。
很多人還是需要爬蟲文章尤其是經驗類的內容的,大家普遍欠缺的是進階的內容。
分享的同學也別太擔心,如果你是誠心分享技術,幫助大家的,長久下來大家都是看得到的,但是別千篇一律就好,就跟吃飯一樣,再好吃的東西讓你連吃一個禮拜你也受不了,別說現在這每天都得吃。另外 @段小草 第4點建議說的就很好。反正美女圖這種吸引眼球的無論你出於哪方面的出發點,我都不覺得這是一個好的技術作者該做的,內心是鄙視+拉黑的。
有些同學說,哎呀不讓寫爬蟲,我沒有活路了啊?
我拋磚引玉的說幾點爬蟲進階的內容,歡迎大家有機會和興趣研究下:
1. asyncio爬蟲。
2. 騰訊系需要登錄網站的爬蟲(因為我當時寫爬蟲覺得QQ登錄體系很難搞,雖然最後搞定了。PS:我說的是研究,不是讓大家分享出來哈,也請不要用seleinum這種低技術門檻的工具)。
3. 分散式爬蟲架構和實踐,最好不要使用現成的Celery。雖然celery的文章也基本沒有。
4. 爬蟲監控和報警,能方便查看和控制抓取節點進程狀態。
5. 圖片驗證碼破解。
6. requests/urllib2/urllib3/scrapy源碼分析。
7. XPath高階用法和場景,比如正則匹配。
8. seleinum高階用法。
順便一想,上述的內容我非常歡迎,並且很願意送贊。
老是爬豆瓣,真的很無聊
老是爬豆瓣,真的很無聊
老是爬豆瓣,真的很無聊
最後, @Manjusaka 說到了我最近出來說話的根本動機:
奉勸各路 「大v」 一句,事莫做絕,凡事一定要按照基本法和遊戲規則來辦事,吃相別太難看了,
太難看了,羊毛割太狠了,圈子搞臭了,大家都討不了好
你們撈錢完了滾蛋了,我們還得在這個圈子混呢。各位想繼續在Python圈子混的同學,你們真的以為這是我一個人的事情么?
所以某些人注意,建議換個地方去割羊毛去,否則我沒事就得出來傷害下你們。各位說,對吧?
歸根到底是人的鍋。
Excuse Me ?
初中級?
恕我直言,目前知乎上有價值的乾貨爬蟲,很少
現在知乎上大部分爬蟲的內容,基本可以總結成這樣一個字吧:「CS人傻錢多,速來」。於是人人都是程序猿
因為語法簡潔,入門門檻低,各種第三方庫使用方便導致的。
Excuse Me ?喵喵喵?這和小白文,水文,腦殘粉,伸手黨們泛濫,有什麼關係?
Flask 我覺得很好用啊,Sanic 性能爆炸啊,怎麼沒看到知乎關於 Python Web 的教程泛濫啊?
好好好,假設你說得有理,Python 語法簡便了,的確適合爬蟲入門,不過現在知乎爬蟲文翻來覆去,抄來抄去,就那幾個站,就那幾個套路,這又是什麼鬼?
很贊同 @段小草 的觀點
寫爬蟲是沒有錯的。寫爬蟲的文章也是沒有錯的。
不過,你們能不能有點新意啊?
所以,這個鍋,我們Python不背
其實之前和董偉明老師討論過這個問題,簡而言之,就是沙丁魚們太多了,鯊魚聞腥而來而已。
再說透徹一點,就是某些人吃相太難看了,不想按照基本法出牌了而已
前段時間華蟒討論過一個話題,為什麼現在 maillist 沒落了,其實答案很簡單啊
現在有幾個人能靜下心來去背一下官方文檔?
現在有幾個人能靜下心來去Gayhub上翻翻代碼,開開眼界?
現在又有幾個人能沉住氣,靜下心去做點學習筆記,寫個博客?
人心,浮躁了,膨脹了,總是想著乘著這波風撈一筆就走,夢想著今天學編程,明天就能年薪百萬,走上人生巔峰
這個結論放在這個話題下一樣適用。
我一直認為,不顧大清國情,一味給小白推薦Python作為編程語言是一種極其不負責任的行為,哪怕你推薦拍黃片都比推薦 Python 好啊。
所以啊,還是老話,圈子浮躁,這鍋,該我們Python背咯?
最後很喜歡 @董偉明 老師的一句話
「我敢開Python爬蟲live,你們敢嘛?」
最後吧,還是奉勸各路 「大v」 一句,事莫做絕,凡事一定要按照基本法和遊戲規則來辦事,吃相別太難看了,太難看了,羊毛割太狠了,圈子搞臭了,大家都討不了好
爬蟲入門不可怕,可怕的是停留在舒適區。
又是一個花錢緩解焦慮感的典型案例。
失敗人士:大神你好,我是曲阜師範大學畢業的四本生,專業是新聞,我現在在臨沂的小公司一個月2000塊錢,聽說編程很火,我很想學編程,但我對編程很感興趣,我又對寫代碼很頭疼,請問大神我如何入門編程?不要教我太難的東西,我一看超過100行的東西就頭痛。
大神:來,我來教你學編程,寫個神奇的東西:爬蟲,先用這5行讀取個網頁……然後把某個tag抓出來……然後輸出……最後存儲一下……耶,你看到了沒,你不僅快速入門了python,你還全面掌握了一個重要應用的框架,是不是很棒!這個東西很有用,大公司都搶著要爬蟲人才呢!
失敗人士:哇,全都存在文本里了,大神厲害!我一下子就成為全棧工程師了!感謝大神!
大神:同學,先別忙看別的……要先打好紮實的基礎,先讀讀我書單,《Python全面解析》《Python快速入門》《21天精通Python語言》《Python源代碼分析》……讀好這20本Python入門教程,你才算入門了Python。不過不要著急,歡迎你參加我的全年Live,我今年有32場Live,歡迎你來參加,原價1個億,現價只要1999元哦!
失敗人士:好的,我馬上報名,和大神一起暢遊計算機科學的世界,提升自我水平!
從此,失敗人士緩解了入門CS的焦慮感,但除了50行爬蟲入門,再也沒獲得任何實質性的東西,而的大神獲得了1999元的收入以及無數膜拜。
(部分摘自羅文益的相關在線教程)
天下熙熙皆為利來,天下攘攘皆為利往。
殺人者罪,利刃何罪之有?
爬蟲入門後,能不能寫的更優雅,更有效率
能不能更多的了解http和api的實際情況
看看python的這些優雅的庫是怎麼實現的
而不是把網上的代碼保存下來,跑起來就行了
當然,如果只是當興趣,學學編程,學學邏輯和流程也不錯
# 寫完發現有點答非所問。Python語言特性、第三方庫、生態環境留給更專業的人答吧。
這種問題和討論每天在時間線上掛著,實在是不想說太多。之前在微信號簡單說了幾句,也有人後台給我留言爭論。我還是來表個態,畢竟我也被人掛出來過。
我應該不算是什麼寫爬蟲的吧?雖然關注我的人大多都因爬蟲而來。不過我在知乎的100多個回答,爬蟲相關的不到10個,專欄20篇文章里,也只有兩篇有關爬蟲。實在算不上什麼主力輸出。
況且,我在知乎的內容輸出其實集中在15年下半年至16年上半年。那個時候我的確有這方面需求和興趣,而且當時Python還沒有和爬蟲如此緊密掛鉤。最近一年的時間基本我沒有寫東西。而且我不靠寫代碼吃飯,現在不是以後也不是,純業餘選手,所以別人說我不專業也好,說我代碼ugly也罷,我都欣然接受。所以我其實不想趟渾水,參與什麼技術圈的討(si)論(bi)。
寫爬蟲是沒有錯的。寫爬蟲的文章也是沒有錯的。這個觀點我還是比較堅定的。
理由:
1、不用也不要想著拯救「小白」。
這個是我之後才慢慢感受到的,沒有惡意,大家也不要對號入座。
的確有很大很大一批人,不要說爬蟲,他們其實只要有「假裝在學習」和「假裝有收穫」這樣的一個狀態就足夠滿足了。所以就不難理解,為什麼那些隨隨便便分享資源、分享XX條技巧的文章比乾貨更受歡迎。因為對於這樣的文章,我甚至不需要親自動手去跑一遍代碼,點一個收藏,寫一條馬克的評論,就好似已經把裡面的知識收入囊中。其實這跟網盤裡堆積的資源和硬碟里沒看的電影是一個道理。但是我依然感到很充實啊。
另一方面,是有關伸手黨的討論。直接要代碼的,提問講不清楚具體情況的,私信里語氣像大爺的。這樣自帶主角光環天生優越感無比強的人見多了以後,也就沒心思「拯救」他們了。
再換一個角度說, 不論是技術、需求還是供應,其實都是金字塔結構的。任何圈子都是小白居多,那小白的小白需求就居多,供小白學習的小白文章就多,這是固然的。加上這玩意兒實在不難,誰都能分杯羹,大V也要有點肚量,不要覺得自己的流量被人分走了。如果真的是商業運營的平台呢,也要講點吃相,該遵守的規矩還是要有,最起碼不抄襲,規範編輯審核。至於內容也好,質量也罷,自然會慢慢由大環境自凈的,這種事情誰都改變不了,就好像你改變不了伸手黨的日經問題一樣。也不要指望以後時間線上看不到各種爬美女圖的入門文章——我自己還打算寫幾篇文章留作自己筆記歸檔呢。
2、爬蟲是一個非常好的入門手段。針對非計科學生。
剛開始寫代碼是比較抽象和枯燥的。我經常和一些學文科的朋友交流,他們都說不感興趣,或者一副你會就可以了的態度。你如果真的讓他們從基礎學起,啃完一本C語言,不看書自己什麼都寫不出來,那有什麼用呢。
所見即所得的模式是一種反饋感很強的學習模式。所以我特別推薦正向從網頁製作學起,反向從爬蟲學起。
網頁從靜態的HTML,到JS,到後端;爬蟲,相應地從靜態到AJAX到各種反爬。都可以很快捷地感受到學習的成果,給自己以反饋感和激勵感,然後不停地挑戰更高難度。這樣的學習曲線就很舒服。
所以,學爬蟲肯定是沒有錯的。
3、寫爬蟲文章也是沒有錯的。
這一點可能會有點爭議。我明確一點條件吧,寫沒有錯的爬蟲文章是沒有錯的。
只要不直接提供全部數據,代碼可以在給定環境下正常運行,文章能把事情講清楚,代碼有簡單的注釋。這樣的文章,都沒有錯。就算是寫一萬篇爬美女圖片的文章,也沒有錯。
我在這裡先不討論社區生態,因為我似乎不怎麼以Python程序員標榜自己,也從來不認為自己能力很強。
單純以學習者的身份而言,開卷有益,下筆也有益。別人做過的,沒有要求我不能再做一次;別人寫過的,沒人要求我不能再寫一次。這些都是其次的。雖然我們經常說,不要重複造輪子,但是一個幾十行的爬蟲代碼恐怕連輪子都談不上吧。
所以我還是鼓勵初學者,把自己的學習過程寫下來,把自己遇到的坑做過的事寫下來。只不過不要冠以教程的名頭,太招人嫌招人恨。我從來都是把標題寫作筆記,真是有夠心機。
4、幾點建議。
我其實早就不怎麼寫代碼了。我的水平很差勁,也一直有人說我寫的代碼不Pythonic。在這邊呢,給一些自己的建議給大家,不管是站在作者還是讀者的立場,談一談我想看到什麼樣的文章。
- 文章的內容,盡量不要千篇一律,最好能有所突破創新。就算是爬網站,那你也換著網站爬,不要爬來爬去就一個mzitu。你們有本事把各類網站全爬了,我們像you-get一樣做個項目,豈不是實現了一個數據精確抓取的通用爬蟲。
- 前面提到了,文章不要直接給數據。直接放數據來下載,總給人一種目的不純的感覺。另一方面,代碼只要放出來,是否Pythonic倒是無所謂的,但是最起碼要保證能在你給定的環境下正常運行吧。
- 一些依賴於技術分享變現的不管個人也好組織也好,注意吃相。說心裡話誰不想變現,錢再多都不余,但是話說回來我也的確拉不下臉,我這點三腳貓的功夫拿去變現也是貽笑大方。所以我還是繼續做我的免費分享吧。
- 伸手黨呢,最好還是能改改,你提問我是樂意回答的,但是你至少要把問題描述清楚。我也不指望你能去什麼分答值乎付費提問,至少客氣一點不要太大爺。其他的所謂的小白群體呢,也希望能給自己一些更明晰的目標,教程是看不完的,別人的知識終歸是別人的。收藏一百篇,不如親自實踐十篇,不如自己做一個別的,希望不要自欺欺人。
- 我還是希望看到更多更高端的文章。這個只能依賴真正的大神無私地做出分享,或者大家成長為大神以後無私地分享出來。說無私倒也不準確,畢竟現在流行知識變現。那就說,希望依靠這方面知識變現的人,能拿出真正的乾貨吧。
最後,我覺得匿名回答說的很對。
可怕的是停留在舒適區。
想想自己一年沒什麼長進,很慚愧。與大家共勉。
門檻低的地方,體力勞動就會盛行。
過去是遊標卡尺,現在是前端。
是。首頁每天被各種python入門爬蟲刷屏,千篇一律的requests+beatifulsoup,並且贊的人還挺多。恕在下直言這樣的爬蟲教程確實沒啥難度並且過於泛濫了,然而這有啥辦法呢?被爬蟲教程刷屏以後我以為知乎群眾學習熱情這麼高,然後開始寫Java和演算法分享,然而寫了一篇演算法分享目前並沒有一個人理我,也不知道是不是因為門檻高了TAT
也許需求在那裡吧。
爬蟲可以抓取很多網上的數據,減少你的重複操作,獲取批量的信息。 比如爬知乎,把自己關注的問題都爬下來整理成文檔。 爬股票數據,方便自己選股。
知道的人多了,他們就開始學了。 而且難度又不大,很多用爬蟲的並非是計算機科班的。
容易上手且有用的東西,泛濫是很容易的。
java也可以爬蟲,為何不像python那樣泛濫?看看那些代碼就知道,沒幾個能夠耐下性子看下去。
python可以用來作出知乎網站,為何不像爬蟲那樣泛濫? 因為涉及太多的知識框架,沒一定基礎的人要啃下來不容易。
明明是各種公眾號水平太低還想寫教程變現的鍋。
根據題主的問題和描述中最後一句話,我把整個問題分成兩個部分,一是Python初級教程中是不是爬蟲教程佔比比較大,為什麼,二是是不是爬蟲教程中Python佔比比較大,為什麼。
Python初級教程中是不是爬蟲教程佔比比較大?
是的。
為什麼?
我想分幾個方面說一下:
1、學習的成本低
正如題主所言,Python和自然語言的相似以及Requests等簡介優秀的第三方庫使得炮製一個簡單的爬蟲易如反掌。藉助這些庫,是非常容易在50行內寫成一個豆瓣圖書、妹子圖這種特定的爬蟲的(鑒於多數教程都很不Pythonic,所以要50行以內)。在如今很多人學習只為了感動自己的情況下,21分鐘就能學會的爬蟲無疑是一個很好的選擇。對於教程撰寫者而言,代碼本身就可讀性很高,因此教程寫起來也非常簡單。
2、成果很容易炫耀
有了低成本,爬蟲同時也意外地高產出。這個高產出主要是初學者能夠向周圍的外行人士展示實際的成品來炫耀。如果教程寫的是爬豆瓣圖書或者豆瓣電影,那就可以說「我最近剛把豆瓣圖書(電影)的Top50爬出來,你要看看不?」更有很多爬蟲教程是教你爬妹子圖甚至是不可描述網站的,那成果更是能夠收藏在硬碟里。因此,爬蟲教程的成果顯而易見。
3、網上教程繁多,容易借鑒
其實認真看看很多教程都是淺嘗輒止,大同小異的。對於一些只是為了寫博客(或專欄)而寫的人,隨意打開幾篇他人的教程,代碼一拷,文章一抄,換個二次元題圖,又能騙得眾多關注。這也是爬蟲教程繁多的原因之一。
4、爬蟲不需要其他輔助知識和資源
這一點是我橫向對比的時候發現的,如果是機器學習的教程,那線性代數的數學知識是不是需要先補習一波,對於Python初學者而言顯然不現實;如果是計算機視覺的教程,那必然有圖包或者圖片需要處理或者識別的,這也很不方便;甚至是看起來也很簡單的網頁後端教程,也要求讀者有html/css的知識,雖然爬蟲也需要涉及,但是讀和寫還是有本質上的差距的。因此,爬蟲是一個很省的教程選擇。
綜上,爬蟲是普通技術博客的第一選擇,成本低、產出高、借鑒版本多又不需要額外資源。但是對於我這個Python愛好者,我覺得爬蟲的水是很深的。我認識的一個學長在暑假中曾經爬各家攜程去哪兒等各家旅遊網站,就在IP池、多線程等比較複雜的方面踩了不少的坑。因此我覺得,如果想要好好學習爬蟲知識和技術的,應該從HTTP等更底層學起,而不因看看這樣的教程就當作了入門,但我那個學長對於爬蟲的態度就是一個工具,想用的時候能用到,這樣的話那些教程又不夠通用,也不太可取。
那麼,是不是爬蟲教程中Python的佔比大呢?
通過在初學程序員之友百度的搜索,我發現:是的。在百度搜索的第一頁上,全都是Python爬蟲的教學。
這又是為什麼呢?
1、語言特性
解釋性語言無需編譯,又無需事先聲明類型。再加上宛如自然語言般的簡潔和無敵好用的眾多第三方庫,這使得Python這門語言有著得天獨厚的優勢。如果是C++,是否要先講講類型系統,亦或是為什麼要編譯;如果是Nodejs,那可能又要講講非同步同步什麼的。Python在這些方面比起來就簡單許多了。
2、環境搭建方便
在Windows上能夠用exe或者msi來安裝,安裝完畢就有IDLE可以來編寫代碼,這是C++、Nodejs等做不到的。同時強大的包管理器又能夠快速地把第三方庫下載下來用。這是Python那麼受歡迎的另一個原因。
綜上,即使其他語言有非常方便的第三方庫,他們也很難取代Python成為大眾心中的爬蟲情人。
寫爬蟲對絕大多數人根本沒有意義,學Python還是從基礎入門好,理解函數、高階函數、生成器、類對初學者更重要:Python教程
這是鍋嗎?
哪個搞技術的初學的時候沒寫過計算器練手嗎?
這是好事,初學者多了就會這樣。記得前幾天看到一答案(文章),大概意思是現在知乎上的文章要麼是入門教程,要麼是工具(包)合集,要麼就是工具或包的簡介,有深度的東西佔比略低。
題主問題說的是初級爬蟲,這個初級好準確。這些天一直看到這方面的文章,一度懷疑知乎這個文章的目的何在?像博客那樣?像文檔那樣?原本還想在知乎和大佬們交流一下asyncio的一些點,可看到這毛毛多「入門爬蟲」就放棄了。
我為什麼放棄?又不吸粉,又不賺錢,發了還沒人看,費力不討好呀。想發的東西稍微有點門檻的話,就成了「小白」( @段小草 大佬說的偽學習人群 )不願看,大佬不屑看。真的費力不討好。不如發篇入門,看得人多,受眾多,能吸粉,能貼個公眾號,能推廣個機構啥的,還不用仔細研究就能發。你看,這多合算。
最近用java寫爬蟲,用於爬取tgp的英雄聯盟數據,感覺真的好浪費時間啊。抓包,對比各個數據是什麼,代碼請求json,創建對應的JavaBean,寫點注釋,說說各個值是幹嘛的。簡直就是浪費時間,最近真的煩。都快找工作了,還做這麼無聊的事。幸好,這兩天就要寫完了。
忙完了這陣子,我也想學個Python,希望到時候,不用它只寫爬蟲。
不過,那種什麼數據都能爬的大牛,python的水平也是極高的吧。
。。。我也寫過。不過一是為了自己記筆記並督促自己學習,二是為了小白能有個入門的東西。我覺得只要是原創就還好啊,最怕那種到處抄和轉載的,搜個報錯一看一堆結果好高興,一打開全tm一個內容
在六月五號左右面試了兩間公司,是爬蟲的,都拿到了offer,裸辭這兩個月學習總算沒有白費啊,辛苦是辛苦了點,也總算實現了自己的目標,有種喜極而泣的感覺,祝賀各位也能堅持初心,實現自己的目標。 ————————————————————————分割線 針對樓主最後一句話,本人還是有點發言權的。我是上個月裸辭專心學習Python爬蟲,也是打算找爬蟲的工作,我覺得以爬蟲入門還是不錯的。我是0基礎的,去年剛畢業,也是因為有上網課的習慣接觸的爬蟲,而爬蟲能入門的原因是你必須真的喜歡爬蟲才可以,不然你也會覺得很難熬下去。一開始靜態網頁的爬取的確不需要什麼額外的知識,甚至你都可以不懂html,css,我就是簡單看了下廖雪峰的基礎教程,然後跟著老師敲就可以了,可是後面你自己寫爬蟲就不行,說到底這就是打怪升級的過程,怎麼進階就看自己了。之後你要大規模爬取,例如京東啊,知乎這些,不僅要懂html,css,JavaScript,我甚至連jquery基礎語法看了一看(後面證明沒啥用,畢竟不用pyquery庫),而且ajax請求要非常熟悉,這裡資料庫的操作也要學,在這個過程中你熬下來了,你能力會得到提升的,裡面也是要用到並發啊,代理池啊,或者scrapy框架等等。後面寫分散式爬取,又要懂redis,以及linux系統吧,又要涉及到爬蟲的部署問題,最後要展示成果什麼的,你又要學什麼web框架,例如tornado,flask什麼的(Django本人沒看過)。個人覺得由爬蟲入門還是不錯,關鍵看你能不能走下去,網上的教程都很泛濫,能篩選出適合自己的尤其重要,共勉吧,樓主好好加油,最近也是終於開始研究scrapy源碼了,累得一逼。
爬蟲入門當然好,學習爬蟲能學到更多的東西,我就是為了爬蟲把html,css,js,jq都看一遍,又為了理解它的原理把網路協議翻了一遍,更進階一點又可以學到資料庫的內容,還可以獲取大量信息為數據分析做準備,最後再應用到機器學習上,完全就是網狀的學習方式。
相比python入門的其它幾個方向,爬蟲又有hacking感又能立刻見到成果也比較有成就感,相比拿python寫web或應用,爬蟲真是又簡單又有趣。
推薦閱讀:
※python爬蟲如何按序抓取一個頁面上的圖文?
※如何用爬蟲下載中國土地市場網的土地成交數據?
※用python爬拉鉤網關於『數據分析』工作的信息為什麼都是空的?
※如何使用爬蟲獲取新加坡PSI信息?
※爬蟲是不是用 Node.js 更好?