日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

你真的知道了嗎,爬蟲工程師( 三 )


用C語言寫肯定是自找苦吃了 。2.任務(wù)隊(duì)列當(dāng)爬蟲任務(wù)很大的時(shí)候 , 寫一個(gè)程序跑下來是不合適的:1.如果中間遇到錯(cuò)誤停掉 , 重頭再來?這不科學(xué)2.我怎么知道程序在哪里失敗了?任務(wù)和任務(wù)之間不應(yīng)該相互影響3.如果我有兩臺機(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 , beanstalkd , 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)不多) 。

推薦閱讀