一,友好性
爬蟲(chóng)的友好性包含兩方面的含義:一是保護(hù)網(wǎng)站的部分私密性,另外是減少被抓取網(wǎng)站的網(wǎng)絡(luò)負(fù)載。
爬蟲(chóng)抓取的對(duì)象是各種類(lèi)型的網(wǎng)站,對(duì)于網(wǎng)站擁有者來(lái)說(shuō),有些內(nèi)容并不希望被所有人搜索到,所以需要設(shè)定協(xié)議,來(lái)告知爬蟲(chóng)哪些內(nèi)容是不允許抓取的,目前有兩種主流的方法可達(dá)此目的,爬蟲(chóng)禁抓協(xié)議和網(wǎng)頁(yè)禁抓標(biāo)記。
二,高性能
互聯(lián)網(wǎng)的網(wǎng)頁(yè)數(shù)量龐大如海,所以爬蟲(chóng)的性能至關(guān)重要。這里的性能主要是指爬蟲(chóng)下載網(wǎng)頁(yè)的抓取速度,常見(jiàn)的評(píng)價(jià)方式是以爬蟲(chóng)每秒能夠下載的網(wǎng)頁(yè)數(shù)量作為性能指標(biāo),單位時(shí)間能夠下載的網(wǎng)頁(yè)數(shù)*越多,則爬蟲(chóng)的性能越高。
要提高爬蟲(chóng)的性能,在設(shè)計(jì)時(shí)程序訪(fǎng)問(wèn)磁盤(pán)的操作方法及其體實(shí)現(xiàn)時(shí)數(shù)據(jù)結(jié)構(gòu)的選擇很關(guān)鍵。比如對(duì)于待抓取URL隊(duì)列和已抓取URL隊(duì)列,因?yàn)閁RL數(shù)量非常大,不同實(shí)現(xiàn)方式性能表現(xiàn)迥異,所以高效的數(shù)據(jù)結(jié)構(gòu)對(duì)于爬蟲(chóng)性能影響很大。
三,可擴(kuò)展性
如上所述,爬蟲(chóng)需要抓取的網(wǎng)頁(yè)數(shù)*巨大,即使單個(gè)爬蟲(chóng)的性能很高,要將所有網(wǎng)頁(yè)都下載到本地,仍然需要相當(dāng)長(zhǎng)的時(shí)間周期,為了能夠盡可能縮短抓取周期,爬蟲(chóng)系統(tǒng)應(yīng)該有很好的可擴(kuò)展性,即很容易通過(guò)增加抓取服務(wù)器和爬蟲(chóng)數(shù)量來(lái)達(dá)到此目的。
目前實(shí)用的大型網(wǎng)絡(luò)爬蟲(chóng)一定是分布式運(yùn)行的,即多臺(tái)服務(wù)器專(zhuān)做抓取,每臺(tái)服務(wù)器部署多個(gè)爬蟲(chóng),每個(gè)爬蟲(chóng)多線(xiàn)程運(yùn)行,通過(guò)多種方式增加并發(fā)性。對(duì)于巨型的搜索引擎服務(wù)商來(lái)說(shuō),可能還要在全球范圍、不同地域分別部署數(shù)據(jù)中心,爬蟲(chóng)也被分配到不同的數(shù)據(jù)中心,這樣對(duì)于提高爬蟲(chóng)系統(tǒng)的整體性能是很有幫助的。