91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何理解爬蟲(chóng)工程師

工程師人生 ? 來(lái)源:wv ? 作者:簡(jiǎn)書(shū)網(wǎng) ? 2019-09-18 11:39 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上個(gè)月初,我入職了一家公司,正式開(kāi)啟了我的爬蟲(chóng)職業(yè)生涯。雖然之前自學(xué)或者說(shuō)自己鉆研并編寫(xiě)了很多爬蟲(chóng),不過(guò)當(dāng)我第一次見(jiàn)到一個(gè)完成的爬蟲(chóng)系統(tǒng)的時(shí)候,坦白說(shuō),還是覺(jué)得挺不可思議的,我大概花了2到3個(gè)禮拜對(duì)這個(gè)系統(tǒng)進(jìn)行了熟悉,現(xiàn)在在保持對(duì)原系統(tǒng)的進(jìn)行維護(hù)的同時(shí),正著手對(duì)其進(jìn)行性能優(yōu)化。隨著理解的深入,我越發(fā)覺(jué)得爬蟲(chóng)工程師的瓶頸其實(shí)并不是JS、css之類(lèi)的前端反混淆技術(shù),也不是requests、BeautifulSoup之類(lèi)的網(wǎng)頁(yè)獲取解析技術(shù),當(dāng)然也不是僅僅對(duì)爬蟲(chóng)框架的使用。這些技術(shù)固然是必須的,但是真正的上升瓶頸還是工程師的素養(yǎng):如何寫(xiě)出一個(gè)高性能可擴(kuò)展的爬蟲(chóng)系統(tǒng)?系統(tǒng)如何兼容數(shù)百個(gè)甚至數(shù)千個(gè)不同類(lèi)型的爬取對(duì)象(網(wǎng)站)?如何管理這些爬蟲(chóng)?如何高效的并發(fā)這些爬蟲(chóng)?如何處理爬取之后的數(shù)據(jù)?各個(gè)子系統(tǒng)之間如何交流?和這些問(wèn)題比起來(lái),對(duì)某個(gè)特定網(wǎng)站的爬取的問(wèn)題只能算是個(gè)入門(mén)級(jí)問(wèn)題。

對(duì)爬蟲(chóng)工程師的理解

我之前寫(xiě)了很多關(guān)于爬蟲(chóng)的文章,涉及了各種各樣的爬取策略;也爬了不少主流非主流的網(wǎng)站。從我剛?cè)腴T(mén)爬蟲(chóng)到現(xiàn)在,每一個(gè)爬蟲(chóng)對(duì)應(yīng)的文章都可以在我的博客上找到,不論是最最簡(jiǎn)單的抓取,還是scrapy的使用。

然而爬了這么多網(wǎng)站,按理說(shuō)應(yīng)付一位爬蟲(chóng)工程師的工作應(yīng)該綽綽有余吧?當(dāng)然不是,正如我上文所說(shuō),在整個(gè)爬蟲(chóng)系統(tǒng)中,如何抓取某個(gè)特定的網(wǎng)站其實(shí)是最小的任務(wù)模塊。而對(duì)于一個(gè)有爬蟲(chóng)需求的公司而言,一個(gè)能夠長(zhǎng)期穩(wěn)定運(yùn)行的爬蟲(chóng)系統(tǒng)才是基本需求。

我從另外一個(gè)角度解釋一下這個(gè)問(wèn)題,如果我們將“爬取某個(gè)頁(yè)面”稱(chēng)為一個(gè)爬蟲(chóng)任務(wù)。那么一般而言,我們會(huì)需要定期執(zhí)行這個(gè)爬蟲(chóng)任務(wù)以滿(mǎn)足業(yè)務(wù)上的需求。比如說(shuō),我這有一個(gè)爬蟲(chóng)任務(wù)是“爬取某只股票的當(dāng)前價(jià)格”,那么我可能會(huì)要求每10s執(zhí)行一次這個(gè)爬蟲(chóng)任務(wù)以達(dá)到匯至股價(jià)走勢(shì)的目的。問(wèn)題就來(lái)了,爬蟲(chóng)系統(tǒng)如何保證每10s執(zhí)行這個(gè)爬蟲(chóng)任務(wù)呢?time.sleep(10)? crontab?open_signal?send_task?

最簡(jiǎn)單的,你可以讓程序執(zhí)行一次爬蟲(chóng)任務(wù)后sleep10秒,然后無(wú)限重復(fù)這個(gè)循環(huán)。嗯,如果只有一個(gè)任務(wù),理論上是可行的,此時(shí)這個(gè)程序就是一種爬蟲(chóng)系統(tǒng)。那么比這種解決方案略微高端一點(diǎn)的就是寫(xiě)一個(gè)定時(shí)任務(wù),每10秒執(zhí)行一下,這下連爬蟲(chóng)系統(tǒng)都省了。

但是如果這種爬蟲(chóng)任務(wù)有很多呢?比如說(shuō),我要繪制1000個(gè)不同股票的股價(jià)走勢(shì)圖。簡(jiǎn)單一點(diǎn)的可以將爬蟲(chóng)任務(wù)改成可接受參數(shù)式的,每10s中傳入1000個(gè)參數(shù)(股票代碼)并用多進(jìn)程或異步執(zhí)行這些任務(wù)。用scrapy也可以解決這個(gè)問(wèn)題,scrapy其實(shí)非常適合這個(gè)場(chǎng)景,但是scrapy沒(méi)有定時(shí)任務(wù),這個(gè)時(shí)候可能又會(huì)需要用到scrapyd和celery。接著,如果有100W個(gè)爬蟲(chóng)任務(wù)呢?雖然有些爬蟲(chóng)只需要簡(jiǎn)單調(diào)整一下參數(shù),這些任務(wù)可以當(dāng)成同一類(lèi)爬蟲(chóng),但即使去除這些同類(lèi)型爬蟲(chóng),仍然會(huì)剩下不同類(lèi)型的爬蟲(chóng)任務(wù),比如說(shuō)30W?那么這30W個(gè)任務(wù)我們?cè)趺刺幚?,不可能在一個(gè)scrapy里寫(xiě)30W個(gè)spider?然后還會(huì)涉及到調(diào)度,因?yàn)槊總€(gè)爬蟲(chóng)的抓取頻率可能是不一樣的;管理,爬蟲(chóng)任務(wù)可能會(huì)根據(jù)產(chǎn)品需求出現(xiàn)增刪的情況;爬取結(jié)果處理,比如說(shuō)去重(對(duì)100W個(gè)結(jié)果去重本身也是個(gè)不小的事情)、存儲(chǔ)等等。

另外,一個(gè)健康的爬蟲(chóng)生態(tài),一般還需要一個(gè)代理池,一個(gè)網(wǎng)頁(yè)渲染服務(wù)器,像爬微博的話(huà)可能還需要Cookie池,然后這個(gè)系統(tǒng)本身應(yīng)該是高可用高可擴(kuò)展的。隨著爬蟲(chóng)任務(wù)數(shù)量的增加,各個(gè)地方都有可能產(chǎn)生性能瓶頸。這也是我為什么說(shuō),爬取任務(wù)其實(shí)是最小的一環(huán),對(duì)于單次任務(wù)的執(zhí)行速度,甚至有時(shí)候它的成敗都不是關(guān)鍵。

插一句,scrapy仍然是一個(gè)很強(qiáng)大很厲害的框架,它是我目前認(rèn)知里最牛逼的爬蟲(chóng)框架。它的厲害不在于它可以方便的編寫(xiě)一個(gè)爬蟲(chóng),而是它的模塊定制功能,你可以根據(jù)實(shí)際的產(chǎn)品需求,通過(guò)調(diào)整中間件或者調(diào)度器方便的實(shí)現(xiàn)你想要的功能。

但是有時(shí)候偶爾會(huì)出現(xiàn)一些反爬特別厲害的網(wǎng)站,這個(gè)時(shí)候就需要對(duì)其進(jìn)行單獨(dú)的研究了。另外,我以為手機(jī)端抓取其實(shí)是一個(gè)很關(guān)鍵的手段,現(xiàn)在的手機(jī)性能強(qiáng)大,能做的事情實(shí)在是太多了,只是大多數(shù)時(shí)候被人忽略了。個(gè)人以為這可能會(huì)變成今后一個(gè)主流的抓取手段。今后我也會(huì)開(kāi)始學(xué)習(xí)這方面的知識(shí)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 工程師
    +關(guān)注

    關(guān)注

    59

    文章

    1603

    瀏覽量

    71018
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是BSP工程師

    一、嵌入式系統(tǒng) 要明白什么是嵌入式軟件工程師,我們先從嵌入式系統(tǒng)(嵌入式設(shè)備)說(shuō)起。維基百科上對(duì)嵌入式系統(tǒng)的定義如下: 嵌入式系統(tǒng)(Embedded System),是一種嵌入機(jī)械或電氣系統(tǒng)內(nèi)部
    發(fā)表于 01-13 06:54

    硬件工程師都在逛的7個(gè)論壇你都知道嗎? #科普 #電子 #硬件工程師 #電子愛(ài)好者

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年12月25日 18:32:00

    Nginx限流與防爬蟲(chóng)配置方案

    在互聯(lián)網(wǎng)業(yè)務(wù)快速發(fā)展的今天,網(wǎng)站面臨著各種流量沖擊和惡意爬蟲(chóng)的威脅。作為運(yùn)維工程師,我們需要在保證正常用戶(hù)訪問(wèn)的同時(shí),有效防范惡意流量和爬蟲(chóng)攻擊。本文將深入探討基于Nginx的限流與防爬蟲(chóng)
    的頭像 發(fā)表于 09-09 15:52 ?906次閱讀

    (仰天長(zhǎng)嘯)為什么受傷的總是硬件工程師...#MDD#MDD辰達(dá)半導(dǎo)體 #電子工程師

    電子工程師
    MDD辰達(dá)半導(dǎo)體
    發(fā)布于 :2025年04月27日 18:21:47

    問(wèn),成為硬件工程師需要幾只手?#硬件工程師 #YXC晶振 #揚(yáng)興科技 #搞笑

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年04月25日 17:15:37

    硬件工程師:回答我!#回答我 #硬件工程師 #YXC晶振 #揚(yáng)興科技

    硬件工程師
    揚(yáng)興科技
    發(fā)布于 :2025年03月25日 18:46:59

    一招拿捏電子工程師#被AI拿捏了 #電子工程師 #電子電工

    電子工程師
    安泰小課堂
    發(fā)布于 :2025年03月25日 17:30:51