每月一萬元,每天監控一千萬個網頁的變化,有什麼可能的解決方案?

比如我有一千萬個URL,我想知道這些URL網頁內容的變化,以天為單位。
有什麼可能的解決方案,每月一萬元的成本足夠嗎?或者說辦到這種事,大約需要多大的成本?
求大神賜教。


簡單算算就知道結果了。

先上個統計數據:

數據來源:https://www.keycdn.com/support/the-growth-of-web-page-size/

我假設監控網頁變化只看HTML部分,其實現在很多動態網頁,是需要考慮JS和CSS的,這個就更複雜了,先不討論。

每天1000w個網頁,訪問一遍要多少流量呢?

1000w*67KB=638.96G,最理想的情況下,每天要這麼多流量。

一個月要18.7T。

想要在一個月內跑出這麼多流量,需要平均網速7.57MB/s,也就是60.58Mbps的帶寬。

這是最理想的情況,考慮到不可能帶寬消耗如此平穩一直是60M左右,肯定有尖峰和低谷,100M的帶寬是跑不了了。

不過好消息是,伺服器一般入站流量免費,出站流量收費,估計出站在入站的1%左右。

現在,出站變成了191G流量/1M帶寬,這個費用不會太高了。

下一步是存儲,想監控變化,一定要存儲。存儲這麼多東西,用AWS上的S3的話,一個月大約3000元。

最後才是大頭,解析這麼多HTML並比較變化,你打算多少內存和CPU資源呢?

要知道,算下來每秒要處理115.74個URL呢。

剩下的7000元也就只能買這個配置了。

c4.8xlarge 36CPU 132ECU 60GB

結論是挺勉強的,還是建立在你自己有相關技術能力的前提下。如果需要僱傭技術人員來操作,那麼工資就會成為最大的開銷了。


樓上都是按照大公司標準,其實完全可以用窮作坊的做法來做。

雲伺服器太貴就自己在家裡架十幾個二手刀片伺服器,平攤下來成本還是很低的;

網路用家庭寬頻,100M寬頻一個月也就一兩百,開他十幾二十個,有門路能弄到ADSL是最爽的,重撥就能換IP;

如果只是要求知道網頁有沒有變化,即只存儲hash,硬碟要求就基本可以忽略了,如果要求存儲網頁歷史數據,那可能硬碟花銷不小。

但是……這一套下來,你準備給程序員發一個月多少的工資呢?

自己搭的伺服器穩定性肯定是很差的,離不開專業人士日常維護,按照目前的行情,一萬塊連運維都請不起……

算下來好像還是直接買別人的爬蟲服務好了。


感謝邀請,這個問題很有代表性,廢話不多,直接告訴你最佳選擇方案:
果斷上八爪魚私有雲版本,跟你這個需求很匹配,100台雲伺服器24*7工作,支持定時,支持任務組導出,還可以通過api實現數據實時同步,與現有系統無縫集成。感興趣的私信我。

價格也在樓主預算範圍內。


1000w每天,就是約7000次請求每分鐘,每次http請求約5秒,那就需要約580個線程,阿里雲2g的伺服器可以起約50個線程,那10台機器就好了,1年的費用約2w,每個月2000. 當然如果你是爬淘寶,那就只少要乘3了


不是特別難。


給你提示一個思路,檢測網頁內容是否有變化,可以通過響應頭部裡面的MD5,etag,或者last modified來判斷。

由於僅需要獲取頭部,所以並不需要拿到body。

所以使用curl -I xxxx純拿頭部就可以(參數是大學I),很省流量。


@李明陽大神 忽略了以下問題

絕大多數伺服器是支持gzip的

以@李明陽 給出的數據為準,平均每個網頁67kb,gzip後大約20+kb;

小部分網頁支持ETAG緩存,在請求的時候可以帶上ETAG來讓網站伺服器判斷網頁是否存在變化。

1000萬個網頁所需流量大約是 1000w*22KB=214.84G

再考慮可能有個別伺服器不支持gzip,估計流量不超過250gb,從寬估計所需帶寬50Mbps。

大部分網頁變化不頻繁,可以直接用gzip壓縮歸檔,判斷是否變化只需與上次文件md5對比即可。

判斷網頁變化、每秒計算115.74*22kb的md5即可(暫不考慮計算出網頁詳細的差異的需求)

結合 @李明陽 大神的結論,我認為1w的預算還是蠻有可能支撐的這個需求的。


瀉藥
按行情來說一月一萬是遠遠不夠的
我們先來算算:請人開發爬蟲大概7k
最基礎的(20G磁碟,一核心,250兆內存一個月1G流量的那種)伺服器大概100-200RMB一年
還有後期運維這些
你自己算吧

或者你自己在家裡架樹莓派集群?那這樣你的整個服務就會變成分散式的,價錢又要漲,還要算寬頻費用。。。


前面大神們說得都挺好。
我在存儲方面補充一下:如果僅僅是看有沒有變化,其實只要存url和md5就好了,為了方便分析加上抓取時間和迭代次數(相同記錄就跳過去,迭代次數初始為0,有變更就補一條(這是要追溯到哪天變更了有用,沒這需求可以更新原記錄),迭代次數加1),為了完成任務加一個上次比對時間和是否比對完成標誌。

然後統計也好統計


就問你要不要入庫?要不要入庫?


看你要監控哪家的,反爬程度如何了。大抵是伺服器和VPN的費用,能提出這種問題的,當然也許還得請個爬蟲工程師!


實際上有1000萬 url ,更關心硬碟有沒有滿,存不下又要加硬碟或者刪緩存文件。至於成本,只有伺服器費用


推薦閱讀:

關於python中beautifulsoup的問題?
能否用爬蟲抓取論文參考文獻?
關於python模擬登錄知乎驗證碼的問題?
如何爬取摩拜單車位置信息?
爬蟲怎麼解決封IP的問題?

TAG:互聯網 | 爬蟲計算機網路 | 搜索引擎 | 大數據 |