學習全面指的是:從urllib開始學起,然後Requests、BeautifulSoup4,然後學習正則表達式,接著xpath解析,最後Scrapy框架。

常用方法指的是:從requests學習獲得源碼,接著xpath和正則解析,最後Scrapy框架。(其實就是省略不常用的urllib和BeautifulSoup4)

詢問過高級爬蟲工程師,在企業級爬蟲,都是使用Scrapy。但是入門學習到底要不要學習全面知識。


個人感覺還是從項目入手去學,如果只是照本宣科,我感覺作用並不是很大,因為就跟你學數學一樣,把書看一遍感覺都懂了,但是真正做題的時候就會發現,還是不會做。全面學的時候,很可能在學的過程中就把你的興趣和積極性給磨光了,學習使用工具是枯燥的,而通過工具去做自己想要的東西是有趣的,讓興趣驅動學習,我感覺這是一個很不錯的方式。談談我個人的看法:(首先,python基礎語法你需要學一遍,要想寫文章,首先得認識字)。我感覺入門學習最主要的是入門,入門之後再全面去學也不晚,別還沒入門就把興趣搞沒了。不妨從網上找幾個簡單的爬蟲教程跟著做做,然後再找一個類型差不多的網站,自己實戰操作一下,就跟練字一樣,剛開始描摹,然後臨摹。

通過自己的努力實現的功能會有小小的成就感,這種喜悅感會不斷的讓你走下去。我想這就是入門。

等你入門之後,就可以去實現更大一點的項目,在項目的實現過程中,你會遇到各種各樣的問題,而在你解決這些問題的過程中,你就是在學習,而且你更能夠記住它。等你做幾個項目之後,你會發現一些常用的方法,你也已經掌握了。這時候你再全面學習的話,我相信你的效率會更高,而且也會記得更牢靠,你可以通過如下方法學習,比如你在學習爬蟲內容提取的時候,一般網上採取的是BeautifulSoup、Xpath……,我相信你在入門階段也是跟著某一個方法走,這就假設bs,如果你想學習其他的使用方法,比如正則表達式,你可以把你之前的項目統統使用正則改寫一遍,這樣我相信你能夠把正則掌握掉。通過這種方法不僅能夠全面學習,而且還是興趣驅動,效率高。你說企業級都是用框架,確實框架幫我們做了很多事,但是你基礎以及原理都掌握了,我相信你學習框架會很快,而且你也知道框架為什麼要這樣寫,甚至你可以改框架,定製你自己的框架。


推薦自己思考流程 理解了整個流程後自己寫爬蟲 之後不斷地改進 提出新需求 重寫爬蟲 等到你覺得自己對於爬蟲理解比較什麼 隨便一個場景都能自己寫出來的時候 推薦再去了解Scrapy 然後去看他是怎麼實現的 和你自己的有啥區別

你只有真正理解了scrapy底層的實現方式,你纔可能成為【高級爬蟲工程師】 否則一上來學scrapy 你只是會給框架裡面填充內容而已


我一直想針對python的爬蟲說一些話,不妨就在這裡說說吧。

針對題主的問題,我的答案是: 不要花這麼多精力在學習爬蟲上,最好不要去學任何一種爬蟲框架。更不要把找到一份寫爬蟲的工作作為你學習python的目標。如果一定要靠學習爬蟲入門,不妨把重點放在數據的存取、多線程多進程上。

最直接的原因是: python很簡單,爬蟲也很簡單。如果你只會很簡單的東西,那你就沒有什麼競爭力。

可能有些人會反對了,我見過知乎的人把python形容為一種易於上手難於精通的語言,把爬蟲形容為一種易於上手難於精通的技術。但根據我的實際經驗來看,python我不評論,爬蟲實在是不太擔得上「難於精通」這幾個字。

為什麼我覺得爬蟲不難,我們可以從技術上來分析一下。我想沒有人會反對,如果沒有反爬蟲技術,爬蟲的編寫難度會極大幅下降。那反爬蟲技術現在是什麼情況呢?不知題主有沒有看過類似爬取間隔和識別爬取間隔之類的爬與反爬的鬥爭,然而這些鬥爭雖然吸引了絕大多數注意力,實際上只佔全部問題的極小一部分。網站真正的反爬蟲殺手鐧是: 極其有限/完全不 開放非註冊用戶的數據瀏覽許可權,並輔以成本極高的註冊流程(比如要求需要驗證碼驗證真實手機號),這個組合可以說是反爬蟲界的核武器,而且是一道幾乎無法逾越的障礙。一旦對方能通過註冊賬戶信息認出你或程序的身份。任你再怎麼換ip、headers等等都是沒有用的。而相比於單純的訪問,註冊的流程是一道容易的多的驗證對方是人還是機器的流程。而且開發這樣一套流程的技術難度並不高,你卻需要用上難得多的技術才有可能能破解,還隨時可能因為對方的反爬蟲策略更新而失效。或許現在還有一些公司,因為業務特殊性或者對數據保護的不夠重視,仍然有不需要登陸就可以獲取其重要數據的機會,但相信題主你想想也能明白,隨著數據在現在計算機行業重要性的繼續提升,這樣的機會以後只可能越來越少。

那大批量爬取不需要登陸就能獲取重要數據的網站難不難呢?很遺憾,大多數情況下這仍然是不難的。許多網站無法對中等速度來自不同ip的匿名爬蟲請求做出有效的防禦,而python主流的網路請求相關的包都提供了成熟的代理設置方法,基本上只要傳個參即可。如果一定要說這其中有什麼難點的話,大概就是找到靠譜的ip源了,但是這跟python有什麼關係嗎?只要你肯花錢,ip源總是能找到的,而企業一般是不會連買ip這點錢都捨不得出的。

更多情況下,是企業需要獲取和處理比較大量的數據。這個數據基本不會超出企業全部人力處理能力的極限太多(當然,基本不會有企業把全部人力投入在這種事情上面); 這些數據獲取的頻度、速度要求都不高,可能只要在幾天,一週內完成一輪就可以,甚至是一次性的。而對於這些需求,說句實話,並不存在什麼難度,甚至一個單線程的爬蟲就足以應對。

當然,這個世界很大,總是有「極有挑戰性」的爬蟲工作需要招人的。但是總量是非常之少的,而除去這一極小部分的工作,其他幾乎所有跟爬蟲密切相關的工作,內容都是相當簡單的。也就是說在爬蟲這個領域,基本不存在這樣一條平緩的曲線,你不太可能一邊工作一邊以一個較為穩定的速度進步,最終到達這類崗位的頂端,反而更有可能要麼就是靠著一定的積累和——以這個崗位的普遍性質來看——很好的運氣直接到達頂端的崗位,然後迅速成長,要麼就是一直在普通崗位上做一些基礎性的工作。

這是技術方面的問題,在大多數情況下,爬蟲都是一件簡單的事。但更令我做爬蟲時感到如鯁在喉的一件事,是動機。在我看來爬蟲是什麼呢?是一種欺騙的「藝術」。

沒錯,欺騙。搜索引擎也是基於爬蟲而且可以例外,但爬蟲並不是搜索引擎唯一的技術難點,況且搜索引擎佔爬蟲總數量的比重完全可以忽略不計,因為站內搜索是不需要爬蟲的,只要搜索自己的資料庫就可以了。而對於大多數爬蟲來說,你需要欺騙你要去爬的網站,讓對方以為你是人類訪問者。這其中有兩個點,一是對方網站出於種種原因,不希望你大批量訪問他的數據,所以通常會設定強度高低不等的反爬蟲程序; 二是你卻偏要獲取他的數據,所以會寫出高明程度不等的程序去欺騙對方的網站,繞過他的反爬蟲。看提問者的描述,是沖著傳說中那種穩定日請求量百萬甚至千萬的傳說級爬蟲去的。但這種爬蟲是什麼概念呢?要麼就是你方企業跟對方有合作,對方給你開了綠色通道讓你毫無顧忌的獲取他的特定數據,要麼就意味著登峯造極的欺騙,繞過對方所有強大(很可能隨著爬取過程還會越來越強大)的反爬蟲技術,快速將對方不希望你大量獲得的數據收入囊中,我想問問題主,這兩點哪個聽起來更難,哪個聽起來對你更有吸引力呢?

我是學python入的行,是學爬蟲入門的python,我在計算機行業的第一份工作就是跟爬蟲密切相關的,所以我對爬蟲的感情比較複雜,但這複雜的感情中主要還是偏向負面的。原因也基本不外乎上面那些,python可以用在很多地方,不過幾乎都是「擁有各領域相關專業知識的人利用python加速對相關領域的研發」,重點和難點都在相關領域的專業知識,比如人工智慧就是這樣。在純python的領域,幾乎所有人提起來第一個想到的詞就是爬蟲,我並不認為這是一件多值得驕傲的事情,題主如果你看到了這裡並且認同我之前說的話,也不妨再探索一下python在其他領域的應用,甚至學習一些其他的語言也未嘗不可。

祝你的職業生涯一路順利。


兩種沒區別...

省略的 urllib 和 BS4 ... 初學也就1、2天的事,有提問的時間都已經學完了

urllib 省略沒什麼問題,因為 requests 可完整取代

BS4 主要是學習 Xpath 提取,用 Scrapy 也要學,所以不要省略,雖然有其他庫可替代,但 BS4 教程比較多,用法也簡單


一邊查,一邊寫起來,進步飛速


沒差別,上手就行

開始的時候可以不用全面學習,跟著項目走,用什麼就學什麼。當你真的覺得感興趣,以後就想從事這方面的工作的時候,可以進行全面學習,以前的東西又有的深入的認識。

強答了一波,僅個人看法哈。


推薦閱讀:
相關文章