Python 爬蟲學到什麼樣就可以找工作了?

非計算機專業,正在自學python,很多教程里提到的網站的爬蟲都會寫了。比如拉勾網,豆瓣,實習僧,京東,淘寶,某妹子圖等等……但是因為不是計算機專業的,也沒學所謂的四大名著,不知道那四大對找工作重要嗎?給一個網站去寫一個爬蟲,基本上會了,該怎麼進階呢?希望各位大神給點建議。


我就是爬蟲起家,一年時間機緣巧合進了BAT。

又是一幫光點關注感謝不點贊的。

感恩大家,上班時間短回頭補充哈,勿怪。

  • 當你能看懂代碼,簡單的偽造請求,爬點圖片視頻搞下實習沒問題。
  • 當你能單挑分散式做億以上採集量,各種偽造與繞ip,基本爬蟲工作都要你。
  • 當你能搞定滑動驗證碼和多數字元驗證碼,基本可以去敲大公司的門了。
  • 當你能搞定第三代驗證碼那。。。。。。

爬蟲是入門超級簡單,深入才難。有興趣請點我頭像,有博客git專欄,可以幫你確定技能樹方向。

補充技能書

  • 現在上班時間,回頭詳細 數據採集技術指南 第一篇 技術棧總覽-附總圖和演講ppt - 知乎專欄
  • 還有以前寫的反反爬蟲倉庫 luyishisi/Anti-Anti-Spider
  • 專欄:Urlteam - 知乎專欄
  • 博客:https://www.urlteam.org/
  • github: luyishisi (luyishisi)

這漲的有點快啊,還在上班,實在沒時間寫。回頭補哈,求不怪。

本文不是來引戰的,評論區的朋友息怒哈,只是想表達:

爬蟲雖然有人覺得入門太簡單因此很low,但是我覺得爬蟲帶來的項目成就感很舒服,讓新人喜歡上編程逐步成長,並且爬蟲做到深入一樣是稀缺資源,不斷成長,就有適合自己的空間。

一些值得看入門者看的相關回答與:

0. 目標檢測筆記一:演算法入門與優缺對比

  1. 想知道大家都用python寫過哪些有趣的腳本? - 知乎。 #
  2. 你寫過的自己覺著最牛X的黑程序? - 知乎。 #
  3. 學習Python很吃力,我是不是可以放棄編程了? - 知乎 #
  4. Python爬蟲傳送post請求要攜帶哪些參數? - 知乎。 #
  5. 不想拿學位證的計算機在校生? - 知乎。#
  6. 你在實驗室經歷過最危險的事情是什麼? - 知乎。 #
  7. 如果你能預知未來,你會不會更加努力? - 知乎。 #

關於一些私信解答,值得分享給小蟲子們看看


前段時間快要畢業,而我又不想找自己的老本行Java開發了,所以面了很多Python爬蟲崗位。因為我在南京上學,所以我一開始只是在南京投了簡歷,我一共面試了十幾家企業,其中只有一家沒有給我發offer,其他企業都願意給到10K的薪資,不要拿南京的薪資水平和北上深的薪資水平比較,結合面試常問的問題類型說一說我的心得體會。

第一點:Python

因為面試的是Python爬蟲崗位,面試官大多數會考察面試者的基礎的Python知識,包括但不限於:

  • Python2.x與Python3.x的區別
  • Python的裝飾器
  • Python的非同步
  • Python的一些常用內置庫,比如多線程之類的

第二點:數據結構與演算法

數據結構與演算法是對面試者尤其是校招生面試的一個很重要的點,當然小公司不會太在意這些,從目前的招聘情況來看對面試者的數據結構與演算法的重視程度與企業的好壞成正比,那些從不問你數據結構的你就要當心他們是否把你當碼農用的,當然以上情況不絕對,最終解釋權歸面試官所有。

第三點:Python爬蟲

最重要也是最關鍵的一點當然是你的Python爬蟲相關的知識與經驗儲備,這通常也是面試官考察的重點,包括但不限於:

  • 你遇到過的反爬蟲的策略有哪些?
  • 你常用的反反爬蟲的方案有哪些?
  • 你用過多線程和非同步嗎?除此之外你還用過什麼方法來提高爬蟲效率?
  • 有沒有做過增量式抓取?
  • 對Python爬蟲框架是否有了解?

第四點:爬蟲相關的項目經驗

爬蟲重在實踐,除了理論知識之外,面試官也會十分注重爬蟲相關的項目:

  • 你做過哪些爬蟲項目?如果有Github最好
  • 你認為你做的最好的爬蟲項目是哪個?其中解決了什麼難題?有什麼特別之處?

以上是我在面試過程中,會碰到的一些技術相關的問題的總結,當然面試中不光是技術這一點,但是對於做技術的,過了技術面基本上就是薪資問題了。

也許有人問我現在在哪家公司做爬蟲開發?很抱歉,最終我放棄了南京的所有機會到了上海做我更喜歡的崗位:數據工程師。

很多人問我如何學習Python爬蟲,為此我整理編寫了一本Python爬蟲相關的電子書,主要包括Python入門、Python爬蟲入門到進階、Python爬蟲面試總結等等。可以在微信公眾號【一個程序員的日常】後台回復關鍵詞【1】獲取這本電子書。


給你一點我的面經吧。
初級的:
網路基礎:cookie,session,https,headers常用的欄位,代理使用等等
python基礎:這個網上搜到的面經都得會,加上非同步,多進程,多線程等等
爬蟲:xpath,requests如何處理https,常見的反爬措施,舉例說一個最難的爬蟲過程,scrapy使用中的細節,例如代理,cookie,傳參等等。
資料庫:資料庫操作,並表之類的。

中級:
網路:幾層網路層的細節,比如說說udp/tcp/smtp區別,說說10.x.x.x/127.x.x.x/192.x.x.x的區別,說說DNS,談談路由交換機的區別
python:多重繼承,多態,單例用裝飾器的實現,數組/生成器/列表解析效率等等稍深入的細節
爬蟲:分散式爬蟲的實現,給你一個任務你馬上給出一個合理的架構,驗證碼的處理,增量數據爬取,寫爬蟲時有沒寫些輔助工具。
資料庫:sql nosql的細節,性能上的。

加分項:數據挖掘,機器學習,自然語言處理,能寫網站,熟練操作linux,github小星星

——————

回到正題,如果你不知道能不能找到工作,那就試著投幾份簡歷,有機會面試就好好準備,面試後,記下差距,努力惡補知識盲區。做爬蟲的公司很多,不斷學習進步很快就能找到工作的,怕就怕閉門造車。


反駁一下黃哥以及BigQuant的答案。
黃哥答案裡面的問題,首先和爬蟲關係不大,屬於基本的演算法題目,有過acm經歷的同學,解決這些問題應該是輕而易舉,但是用這些東西去面試,還是遠遠不夠的。
BigQuant的答案,是在學習python爬蟲必學的內容,照直說,屬於初級階段。而題主是一名非計算機專業的人員,脫離了爬蟲很難做別的東西,所以題主千萬不要以為會了爬蟲了基本技能就可以找工作。
不知道你們有沒有用過一個叫八爪魚採集器的軟體,一些你所謂的爬蟲,也就是在這個軟體點點滑鼠的事情。
題主想要找到工作,還是要扎紮實實的繼續學習,結合大數據相關技能,機器學習,分散式,數據分析,數據倉庫等等。
另外,抽空看一下計算機網路,操作系統,數據結構,計算機組成原理才能更好的理解和深入。


1. 首先要熟悉python,能寫簡單的程序
2. 會寫python的多線程,多進程操作(如果需要爬取大量的數據)

3. 會使用requests庫,懂得簡單的http協議
4. 會解析網頁,比如使用lxml或BeautifulSoup 5. 會用chrome的開發者工具查看請求,並能用requests構造出相同的請求

6. 熟練後,可以學習一下scrapy框架

如果網站有反爬邏輯,可能需要使用代理,可以花錢購買代理,這種代理質量有保證

懂得這些後,找爬蟲的工作很輕鬆。最好自己先做一個項目,比如爬百科,微博等


基礎
1.熟練使用python語言
2.熟悉掌握HTTP協議
3.掌握Dom結構,了解Xpath/css選擇器,準確抽取數據
4.熟練使用python下的http類庫:urllib urllib2 這種
5.了解常用文件格式的解析 excel,pdf 這種

進階
1.至少掌握一種爬蟲框架,如Pyspider/Scrapy
2.能夠分析不同網站,網頁的結構特點及規律調整架構
3.會使用代理,了解反爬蟲機制,了解robots協議
4.搭建分散式爬蟲架構

高級
1.至少掌握一種關係型資料庫如Mysql
2.掌握一種nosql資料庫,如Mongodb,Redis
3.掌握正文提取演算法的原理並使用
4.了解布隆過濾器
5.了解Solr


這是我之前給公司寫的招聘要求,不一定適用於題主,爬蟲乍一看簡單,裡面的說頭太多了,不過找工作的話基本能寫出來就行。

話說想找工作,最直接的方法就是去招聘網站看比較大的互聯網公司他們的要求,十條中有四五條能對上就可以去面試了。


程序員面試一般要做一些面試題,不管應聘爬蟲、或web開發崗位。

如果下面的題目都會寫,直接可以去面試,如果不會寫,建議從基礎訓練起。

爬蟲可以從下面一些知識點入手學習。

1、http相關知識。

2、瀏覽器攔截、抓包。

3、python2 中編碼知識,python3 中bytes 和str類型轉換。

4、抓取javascript 動態生成的內容。

4、模擬post、get,header等

5、cookie處理,登錄。

6、代理訪問。

7、多線程訪問、python 3 asyncio 非同步。

8、正則表達式、xpath等

等等。。。。

還有scrapy requests等第三方庫的使用。

請看看

python習題:python 判讀是不是等差數列,要求演算法時間複雜度為O(NlogN)
https://zhuanlan.zhihu.com/p/23134333

python 練習題:走迷宮
https://zhuanlan.zhihu.com/p/24197902

python列表元素分組
https://zhuanlan.zhihu.com/p/22067672

python 面試題:相同字母異序詞。
https://zhuanlan.zhihu.com/p/21608518

python剪刀石頭布編程思路
https://zhuanlan.zhihu.com/p/21297056

只要真的會編程,找到Python職位不是問題。
https://zhuanlan.zhihu.com/p/26746604

為啥水平不高的Python 初級程序員,企業還願意招聘。
https://zhuanlan.zhihu.com/p/25848154


我有個朋友學python就是為了爬取小黃網的圖片資源。。。


學web開發,別學爬蟲。
學完了web開發,你會發現,入門爬蟲簡單到不行。


爬蟲入門容易。隨便拉個智商正常的大學生,不用一個星期就能教他會爬豆瓣。如果一直停留在僅僅爬爬豆瓣電影,采黃圖之類的水平,是很難提升很難找到工作的。

最基本的,你要會:

* 基本計算機知識,計算機網路、操作系統等

* 基本工具的使用:fiddler抓包發包,偽造請求。chrome控制台,清cookie,js打斷點。

* Pyspider/Scrapy等爬蟲框架。

* NoSQL、SQL

* 在linux下開發加分,文檔寫得好看加分,熱愛開源常在GitHub混加分。

說說爬蟲工作中所需但容易被別人忽略的知識:

* 前端知識:很多人覺得爬蟲不用懂js。當你遇到一些反爬蟲很厲害的網站,在混淆的js代碼裡面做手腳,每次請求頭部都一堆莫名其妙的東西。你不懂點js壓根不知道怎麼下手。

* 計算機基礎知識:你可能會用框架了pyspider,scrapy都用得很溜,寫個爬蟲半個小時就搞定。爬個豆瓣沒什麼關係,但是數據量一大,問題就出來了。pyspider用資料庫去重,所有任務都寫入資料庫里,爬了千萬級別數據的時候操作時間都花費在資料庫操作上面;scrapy可以用Redis去重,但是128G內存也有爆的時候。這時候框架就不滿足你的需求你,你需要去改,用個布隆過濾器什麼的。這不單單是爬蟲的問題了。

我覺得吧,爬蟲學到你基本上可以想采誰就采誰。不滿足僅僅寫爬蟲,自己還去寫寫代理池啊之類的,搗鼓下pyspider的源碼啊之類的。你就可以勝任一份爬蟲工作了。


至少要達到可以自如運用Python 爬蟲獲取自己想要的東西,比如其中一位匿名答主說的抓取小黃圖啥的。

言歸正轉,我打個比方吧。

夏日你看到個美人婀娜多姿的朝你走來,馬上能想到「媚眼含羞合,丹唇逐笑開。風卷葡萄帶,日照石榴裙。——出自何思澄《南苑逢美人》」

達到這個水平,你就可以找工作啦。

祝好。


只要堅持做好一件事情就可以的。。


只要肯干,技術不是問題。
數據好爬,清洗繁瑣。
應用要開腦洞。
調度部署要管理。
驗證碼要攻克

Python不是最適合做爬蟲的東東
C#才是
知道為啥嗎?
天朝有一種東西叫ADSL
還有一種東西叫VPS
不是所有肉雞都能跑Python
但幾乎所有Window都可以跑C#

驗證碼識別,C#亦不弱
你要懂得原理
數據結構和演算法以及數學
語言不是問題
問題是要反覆調整代碼

爬蟲不是一勞永逸

隨手寫個新用途

幾十種是有的

隨時盯著他的異常和進度

正則Jason XML SQL都是拿手小菜.....

如果你能用代碼識別出來

哪些美女圖片是絲襪美腿

哪些是雅麥喋

聯繫我推薦你


如果能從天眼查爬個幾百萬數據應該就可以了,開個阿里雲用分散式,儲存用mongodb


雖然是計算機專業的,但其實和題主你差不多,正式工作不清楚,找實習的話題主夠了,把項目找個blog發上去,附在簡歷上,去拉勾,實習僧一家一家投就好了。數據結構計算機網路操作系統還是需要學習的,我最近越來越感受到,爬蟲的功夫很多不在爬蟲本身,而在這些基礎課程上。
去面試前把你做出來的東西彩印一下,去了給面試官看看可以增加好感度。
加油嘍題主!


爬蟲實戰--爬取騰訊應用寶 - 網易雲課堂


數據好爬,爬出來的數據清理出有商業價值的是個功夫


樓主說的四大名著是哪四大名著


沒有人像我一樣用c++配合curl htmlcxx做爬蟲么


推薦閱讀:

有關ospf協議的一個問題?
TCP 為什麼沒有基於 UDP 實現?
為什麼在不同網站查詢到自己的本機公網 IP 不一樣?
TCP連接中啟用和禁用TCP_NODELAY有什麼影響?
網路爬蟲相關畢業設計,有什麼比較合適的書籍推薦?

TAG:Python | 計算機網路 | 爬蟲計算機網路 |