爬蟲工程師和java開發(fā)哪個(gè)難,搞 Java 最重要的是什么?毫不夸張地說,掌握和了解JavaEE、python、php,學(xué)哪個(gè)比較好?,java爬蟲工程師和java開發(fā)工程師有區(qū)別嗎,一個(gè)合格的數(shù)據(jù)爬蟲工程師需要掌握什么??,基本就能走遍天下都不怕了!
1.JavaEE、python、php,學(xué)哪個(gè)比較好?
首先要說明,JavaEE、PHP、Python都是很好的語言,它們只是應(yīng)用的場景不同,只要學(xué)好其中一個(gè),都能夠有很好的發(fā)展。根據(jù)職業(yè)規(guī)劃選語言關(guān)于題主的問題,這三者先學(xué)哪個(gè),我覺得應(yīng)該根據(jù)自己的發(fā)展規(guī)劃來選,脫離職業(yè)方向談?wù)Z言都是空談。先確定自己以后想從事哪個(gè)方面,應(yīng)用開發(fā)、Web前端、后臺(tái)還是大數(shù)據(jù)?如果你喜歡做網(wǎng)站,PHP可能是你的*,因?yàn)槲覈?0%的中小型網(wǎng)站都是PHP開發(fā)的,PHP簡單易學(xué)。如果你想開發(fā)軟件,我們常說的企業(yè)軟件,各種各樣的管理系統(tǒng),基本都是java開發(fā)的,在這一領(lǐng)域,Java具有不可撼動(dòng)的地位。python是隨著人工智能火起來的語言,很是熱門,但是崗位確實(shí)有限。人工智能是未來,但是什么時(shí)候會(huì)大爆發(fā),會(huì)穩(wěn)定,這還是一個(gè)未知數(shù)。不過,作為入門語言,還是不錯(cuò)的,畢竟簡單。其實(shí)你可以不必太糾結(jié)編程語言,語言都是想通的,你學(xué)會(huì)了一門,再去學(xué)習(xí)一門新的語言,上手也是很快的。個(gè)人建議Java就個(gè)人而且,其實(shí)比較推薦先學(xué)Java。當(dāng)然并不是說PHP、Python不好,而是對于一個(gè)零基礎(chǔ)的新人來說,最重要的是先學(xué)習(xí)一門語言,然后找到工作不是嗎?而找工作的話,Java無疑是最容易的。而且Java的路是越走越寬,未來的選擇性更多,可以做企業(yè)級軟件開發(fā),可以做網(wǎng)站后臺(tái)開發(fā),可以往移動(dòng)方向/大數(shù)據(jù)方向/云計(jì)算方面發(fā)展。而PYthon相對來說以后的選擇性就少些,大多學(xué)了都是做爬蟲,而爬蟲的崗位并不多。而人工智能工程師,一般都是那種博士、專家級別的,要求非常高。以下是三種語言的崗位需求,以上海為例:JavaEE學(xué)習(xí)路線JavaEE的學(xué)習(xí)可以分為以下階段:1.JavaSE階段2.JavaWeb基礎(chǔ)3.SSH開發(fā)框架4.其它開發(fā)框架5.其它常用技術(shù)*階段:掌握J(rèn)avaSE該階段是學(xué)習(xí)JavaEE的入門階段,也是基礎(chǔ)階段,每個(gè)零基礎(chǔ)的Java的學(xué)習(xí)者都必須掌握。學(xué)習(xí)完這個(gè)階段我們就可以開發(fā)簡單的桌面軟件了,可以嘗試去找工作,然后繼續(xù)邊工作邊學(xué)習(xí)。該階段推薦書籍:《Thinking in Java》 《Head First Java》第二階段:JavaWeb基礎(chǔ)學(xué)完JavaSE,緊接著我們就該學(xué)習(xí)JavaWeb,JavaWeb也是Java開發(fā)工程師必須掌握的內(nèi)容。該階段推薦書籍:《Head First: Servlet and JSP》《Head First HTML與CSS》第三階段:掌握SSH開發(fā)框架SSH開發(fā)是Spring、Struts2和Hibernate框架的簡稱,也是主流的Java開發(fā)框架,它是每個(gè)JAVA開發(fā)者必學(xué)的內(nèi)容之一。該階段推薦書籍:《J2EE without EJB》《Java 》第四階段:其它開發(fā)框架MyBatis是一個(gè)支持普通SQL查詢、存儲(chǔ)過程和高級映射的優(yōu)秀持久層框架。Spring MVC是一個(gè)基于MVC的Web框架。Spring MVC是Spring框架的一個(gè)模塊。MyBatis和Spring MVC這兩個(gè)框架也是現(xiàn)在很公司在用的框架,所以JAVA學(xué)習(xí)者必須掌握。該階段推薦書籍:《Spring實(shí)戰(zhàn)(第4版)》第五階段:其他常用技術(shù)查看Java工程師崗位的要求你會(huì)發(fā)現(xiàn),企業(yè)除了要求掌握框架的使用外,還會(huì)對其它一些常用的技術(shù)有所要求,比如JAVA項(xiàng)目構(gòu)建工具maven,oracle數(shù)據(jù)庫,開源的全文搜索引擎Lucene,開源的搜索服務(wù)器solr,Web Service,linux等技術(shù)。想成為一名優(yōu)秀的JAVA開發(fā)者,這些技術(shù)都是我們必須掌握的。該階段推薦書籍:《Maven 實(shí)戰(zhàn)》JavaEE學(xué)習(xí)方法JavaEE的學(xué)習(xí)可以線下報(bào)培訓(xùn)班,也可以自己自學(xué)。培訓(xùn)班的好處就是學(xué)習(xí)的知識比較全面,有專業(yè)老師系統(tǒng)授課,遇到問題可以咨詢老師得到快速解決。但是相應(yīng)的學(xué)費(fèi)比較昂貴。如果選擇自學(xué)的話,就需要有很強(qiáng)的學(xué)習(xí)能力以及毅力。關(guān)于自學(xué)網(wǎng)站個(gè)人比較推薦W3Cshcool,不僅有豐富的理論知識,還有實(shí)戰(zhàn)課程,讓你邊學(xué)邊實(shí)踐。此外W3Cshcool還有移動(dòng)APP哦,讓你隨時(shí)隨地都能學(xué)習(xí)編程。當(dāng)然,如果喜歡看視頻學(xué)習(xí)的話,推薦慕課網(wǎng),一套視頻教程的收費(fèi)不貴。寫在*沒有*的語言,只有最合適的語言。沒有糟糕的語言,只有糟糕的程序員。沒有一種語言是萬能的,只會(huì)一種語言是萬萬不能的。*,我想告訴題主,*門編程語言的學(xué)習(xí)過程永遠(yuǎn)是枯燥的,痛苦的,只有堅(jiān)持不懈的學(xué)習(xí)下去,才能見到美麗的彩虹。W3Cschool與大家共勉之!
2.java爬蟲工程師和java開發(fā)工程師有區(qū)別嗎
爬蟲是開發(fā)的一個(gè)分支,就和數(shù)學(xué)和高等數(shù)學(xué)一樣,但是側(cè)重點(diǎn)不一樣。
3.一個(gè)合格的數(shù)據(jù)爬蟲工程師需要掌握什么
二、爬蟲工程師需要掌握哪些技能?我見過這樣的說法:“爬蟲是低級、重復(fù)性很多的工作,沒有發(fā)展前途”。這是誤解。首先,對于程序員來說基本上不存在重復(fù)性的工作,任何重復(fù)勞動(dòng)都可以通過程序自動(dòng)解決。例如博主之前要抓十幾個(gè)相似度很高但是html結(jié)構(gòu)不太一樣的網(wǎng)站,我就寫了一個(gè)簡單的代碼生成器,從爬蟲代碼到單元測試代碼都可以自動(dòng)生成,只要對應(yīng)html結(jié)構(gòu)稍微修改一下就行了。所以我認(rèn)為,重復(fù)性的勞動(dòng)在編程方面來說基本上是不存在的,如果你認(rèn)為自己做的工作是重復(fù)性的,說明你比較勤快,不愿意去偷懶。而我還認(rèn)為,勤快的程序員不是好程序員。下面我根據(jù)自己這段時(shí)間的工作經(jīng)歷,講一講爬蟲需要哪些相關(guān)的技能。1.基本的編碼基礎(chǔ)(至少一門編程語言)這個(gè)對于任何編程工作來說都是必須的?;A(chǔ)的數(shù)據(jù)結(jié)構(gòu)你得會(huì)吧。數(shù)據(jù)名字和值得對應(yīng)(字典),對一些url進(jìn)行處理(列表)等等。事實(shí)上,掌握的越牢固越好,爬蟲并不是一個(gè)簡單的工作,也并不比其他工作對編程語言的要求更高。熟悉你用的編程語言,熟悉相關(guān)的框架和庫永遠(yuǎn)是百益無害。我主要用Python,用Java寫爬蟲的也有,理論上講任何語言都可以寫爬蟲的,不過*選擇一門相關(guān)的庫多,開發(fā)迅速的語言。用C語言寫肯定是自找苦吃了。2.任務(wù)隊(duì)列當(dāng)爬蟲任務(wù)很大的時(shí)候,寫一個(gè)程序跑下來是不合適的:如果中間遇到錯(cuò)誤停掉,重頭再來?這不科學(xué)我怎么知道程序在哪里失敗了?任務(wù)和任務(wù)之間不應(yīng)該相互影響如果我有兩臺(tái)機(jī)器怎么分工?所以我們需要一種任務(wù)隊(duì)列,它的作用是:講計(jì)劃抓取的網(wǎng)頁都放到任務(wù)隊(duì)列里面去。然后worker從隊(duì)列中拿出來一個(gè)一個(gè)執(zhí)行,如果一個(gè)失敗,記錄一下,然后執(zhí)行下一個(gè)。這樣,worker就可以一個(gè)接一個(gè)地執(zhí)行下去。也增加了擴(kuò)展性,幾億個(gè)任務(wù)放在隊(duì)列里也沒問題,有需要可以增加worker,就像多一雙虧筷子吃飯一樣。常用的任務(wù)隊(duì)列有kafka,,celery等。3.數(shù)據(jù)庫這個(gè)不用講了,數(shù)據(jù)保存肯定要會(huì)數(shù)據(jù)庫的。不過有時(shí)候一些小數(shù)據(jù)也可以保存成json或者csv等。我有時(shí)想抓一些圖片就直接按照文件夾保存文件。推薦使用NoSQL的數(shù)據(jù)庫,比如mongodb,因?yàn)榕老x抓到的數(shù)據(jù)一般是都字段-值得對應(yīng),有些字段有的網(wǎng)站有有的網(wǎng)站沒有,mongo在這方面比較靈活,況且爬蟲爬到的數(shù)據(jù)關(guān)系非常非常弱,很少會(huì)用到表與表的關(guān)系。4.HTTP知識HTTP知識是必備技能。因?yàn)橐赖氖蔷W(wǎng)頁,所以必須要了解網(wǎng)頁啊。首先html文檔的解析方法要懂,比如子節(jié)點(diǎn)父節(jié)點(diǎn),屬性這些。我們看到的網(wǎng)頁是五彩斑斕的,只不過是被瀏覽器處理了而已,原始的網(wǎng)頁是由很多標(biāo)簽組成的。處理*使用html的解析器,如果自己用正則匹配的話坑會(huì)很多。我個(gè)人非常喜歡xpath,跨語言,表達(dá)比價(jià)好,但是也有缺點(diǎn),正則、邏輯判斷有點(diǎn)別扭。HTTP協(xié)議要理解。HTTP協(xié)議本身是無狀態(tài)的,那么“登錄”是怎么實(shí)現(xiàn)的?這就要求去了解一下session和cookies了。GET方法和POST方法的區(qū)別(事實(shí)上除了字面意思不一樣沒有任何區(qū)別)。瀏覽器要熟練。爬蟲的過程其實(shí)是模擬人類去瀏覽器數(shù)據(jù)的過程。所以瀏覽器是怎么訪問一個(gè)網(wǎng)站的,你要學(xué)會(huì)去觀察,怎么觀察呢?Developer Tools!Chrome的Developer Tools提供了訪問網(wǎng)站的一切信息。從traffic可以看到所有發(fā)出去的請求。copy as curl功能可以給你生成和瀏覽器請求完全一致的curl請求!我寫一個(gè)爬蟲的一般流程是這樣的,先用瀏覽器訪問,然后copy as curl看看有哪些header,cookies,然后用代碼模擬出來這個(gè)請求,*處理請求的結(jié)果保存下來。5.運(yùn)維這個(gè)話題要說的有很多,實(shí)際工作中運(yùn)維和開發(fā)的時(shí)間差不多甚至更多一些。維護(hù)已經(jīng)在工作的爬蟲是一個(gè)繁重的工作。隨著工作時(shí)間增加,一般我們都會(huì)學(xué)著讓寫出來的爬蟲更好維護(hù)一些。比如爬蟲的日志系統(tǒng),數(shù)據(jù)量的統(tǒng)計(jì)等。將爬蟲工程師和運(yùn)維分開也不太合理,因?yàn)槿绻粋€(gè)爬蟲不工作了,那原因可能是要抓的網(wǎng)頁更新了結(jié)構(gòu),也有可能出現(xiàn)在系統(tǒng)上,也有可能是當(dāng)初開發(fā)爬蟲的時(shí)候沒發(fā)現(xiàn)反扒策略,上線之后出問題了,也可能是對方網(wǎng)站發(fā)現(xiàn)了你是爬蟲把你封殺了,所以一般來說開發(fā)爬蟲要兼顧運(yùn)維。所以爬蟲的運(yùn)維我可以提供下面幾個(gè)思路:首先,從數(shù)據(jù)增量監(jiān)控。定向爬蟲(指的是只針對一個(gè)網(wǎng)站的爬蟲)比較容易,一段時(shí)間之后對一些網(wǎng)站的數(shù)據(jù)增量會(huì)有一個(gè)大體的了解。經(jīng)??纯催@些數(shù)據(jù)的增加趨勢是否是正常就可以了(Grafana)。非定向爬蟲的數(shù)據(jù)增量不是很穩(wěn)定,一般看機(jī)器的網(wǎng)絡(luò)狀況,網(wǎng)站的更新情況等(這方面我的經(jīng)驗(yàn)不多)。然后看爬蟲執(zhí)行的成功情況。在上面提到了用任務(wù)隊(duì)列控制爬蟲工作,這樣解耦可以帶來很多好處,其中一個(gè)就是可以就是可以對一次爬蟲執(zhí)行進(jìn)行日志??梢栽诿看闻老x任務(wù)執(zhí)行的時(shí)候,將執(zhí)行的時(shí)間、狀態(tài)、目標(biāo)url、異常等放入一個(gè)日志系統(tǒng)(比如kibana),然后通過一個(gè)可視化的手段可以清晰地看到爬蟲的失敗率。爬蟲拋出的Exception。幾乎所有的項(xiàng)目都會(huì)用到錯(cuò)誤日志收集(Sentry),這里需要注意的一點(diǎn)是,忽略正常的異常(比如錯(cuò)誤,鎖沖突等),否則的話你會(huì)被這些錯(cuò)誤淹沒。
雖說掌握和了解了JavaEE、python、php,學(xué)哪個(gè)比較好?,java爬蟲工程師和java開發(fā)工程師有區(qū)別嗎,一個(gè)合格的數(shù)據(jù)爬蟲工程師需要掌握什么??,能走遍天下,但也要不斷去學(xué)習(xí)新的知識,更多的Java知識,請聯(lián)系客服獲取。