爬蟲是一個比較容易上手的技術(shù),也許花5分鐘看一篇文檔就能爬取單個網(wǎng)頁上的數(shù)據(jù)。但對于大規(guī)模爬蟲,完全就是另一回事,并不是1*n這么簡單,還會衍生出許多別的問題。
系統(tǒng)的大規(guī)模爬蟲流程如圖所示。
先檢查是否有API
API是網(wǎng)站官方提供的數(shù)據(jù)接口,如果通過調(diào)用API采集數(shù)據(jù),則相當(dāng)于在網(wǎng)站允許的范圍內(nèi)采集,這樣既不會有道德法律風(fēng)險,也沒有網(wǎng)站故意設(shè)置的障礙;不過調(diào)用API接口的訪問則處于網(wǎng)站的控制中,網(wǎng)站可以用來收費,可以用來限制訪問上限等。整體來看,如果數(shù)據(jù)采集的需求并不是很獨特,那么有API則應(yīng)優(yōu)先采用調(diào)用API的方式。
數(shù)據(jù)結(jié)構(gòu)分析和數(shù)據(jù)存儲
爬蟲需求要十分清晰,具體表現(xiàn)為需要哪些字段,這些字段可以是網(wǎng)頁上現(xiàn)有的,也可以是根據(jù)網(wǎng)頁上現(xiàn)有的字段進一步計算的,這些字段如何構(gòu)建表,多張表如何連接等。值得一提的是,確定字段環(huán)節(jié),不要只看少量的網(wǎng)頁,因為單個網(wǎng)頁可以缺少別的同類網(wǎng)頁的字段,這既有可能是由于網(wǎng)站的問題,也可能是用戶行為的差異,只有多觀察一些網(wǎng)頁才能綜合抽象出具有普適性的關(guān)鍵字段——這并不是幾分鐘看幾個網(wǎng)頁就可以決定的簡單事情,如果遇上了那種臃腫、混亂的網(wǎng)站,可能坑非常多。
對于大規(guī)模爬蟲,除了本身要采集的數(shù)據(jù)外,其他重要的中間數(shù)據(jù)(比如頁面Id或者url)也建議存儲下來,這樣可以不必每次重新爬取