網(wǎng)頁(yè)基本構(gòu)成和抓取原理
網(wǎng)頁(yè),是一種可以被瀏覽器等客戶端解析的一種文件。與我們平常遇到的文件的區(qū)別是:網(wǎng)頁(yè)是根植于互聯(lián)網(wǎng)的。也就是說(shuō)我們通過(guò)瀏覽器瀏覽的網(wǎng)頁(yè)文件大部分是不在本地的,它有可能在世界上的任何一臺(tái)連接網(wǎng)絡(luò)的計(jì)算機(jī)上面。而且,通過(guò)網(wǎng)絡(luò)的超鏈接,我們可以瀏覽世界任意角落的網(wǎng)頁(yè)文件,這就是我們平常說(shuō)的網(wǎng)上沖浪,足不出戶,就能融入整個(gè)世界。
爬蟲抓取的是數(shù)據(jù)其實(shí)就是網(wǎng)頁(yè)上的內(nèi)容,具體的抓取原理我們?cè)谶@個(gè)小節(jié)會(huì)說(shuō)到,下面我們先來(lái)看下網(wǎng)站的概念:
1. 網(wǎng)站的概念
在具體講解網(wǎng)頁(yè)的構(gòu)成之前。我們需要先了解一下網(wǎng)站的概念。
網(wǎng)站,是對(duì)外提供服務(wù)的多個(gè)網(wǎng)頁(yè)構(gòu)成的集合。它主要分為靜態(tài)網(wǎng)站和動(dòng)態(tài)網(wǎng)站。
1.1 靜態(tài)網(wǎng)站
靜態(tài)網(wǎng)站指的是網(wǎng)站下所有的頁(yè)面都是使用 HTML 構(gòu)成的網(wǎng)站。所謂靜態(tài),不是指網(wǎng)頁(yè)是靜止不動(dòng)的,網(wǎng)頁(yè)中也可以有動(dòng)畫,視頻等信息。這里的靜態(tài),指的是無(wú)法與服務(wù)端進(jìn)行互動(dòng)。只是被動(dòng)的解析顯示服務(wù)器端響應(yīng)回來(lái)的信息。
靜態(tài)網(wǎng)站的優(yōu)點(diǎn):
- 容易被搜索引擎收錄,方便 SEO 優(yōu)化。
- 內(nèi)容獨(dú)立,不依賴于數(shù)據(jù)庫(kù)。
靜態(tài)網(wǎng)站的缺點(diǎn):
- 維護(hù)成本比較大,大部分內(nèi)容需要人工手工更新。
- 頁(yè)面無(wú)法互動(dòng),用戶體驗(yàn)不佳。
1.2 動(dòng)態(tài)網(wǎng)站
動(dòng)態(tài)網(wǎng)站相對(duì)于靜態(tài)網(wǎng)站,它可以提供更多交互上的體驗(yàn)。比如,用戶的注冊(cè)登錄,實(shí)時(shí)推薦等功能。動(dòng)態(tài)網(wǎng)站里面不僅包含了靜態(tài)的 HTML 文件,也會(huì)包含服務(wù)器端的腳本,比如 Jsp,Asp 等。
動(dòng)態(tài)網(wǎng)站的優(yōu)點(diǎn):
- 用戶體驗(yàn)良好,可以實(shí)現(xiàn)更多個(gè)性化的設(shè)置。
- 服務(wù)器可以對(duì)客戶端進(jìn)行更多的互動(dòng),方便服務(wù)器對(duì)數(shù)據(jù)的管理和分析。
動(dòng)態(tài)網(wǎng)站的缺點(diǎn):
- 需要與數(shù)據(jù)庫(kù)進(jìn)行處理,訪問(wèn)速度大大降低。
- 對(duì)于搜索引擎不友好。
不管是靜態(tài)網(wǎng)站里面的網(wǎng)頁(yè),還是動(dòng)態(tài)網(wǎng)站里面的網(wǎng)頁(yè),他們都有一些網(wǎng)頁(yè)共同的基本內(nèi)容。下面我們來(lái)看下網(wǎng)頁(yè)的三大基本元素:
2. 網(wǎng)頁(yè)的三大基本元素:
后面的章節(jié),我們會(huì)對(duì)網(wǎng)頁(yè)的三大基本元素進(jìn)行具體的介紹,這里只是簡(jiǎn)單的闡述一些基本的概念和用途。
2.1 HTML
HTML 是一種標(biāo)記語(yǔ)言。標(biāo)記語(yǔ)言并不是編程語(yǔ)言,它無(wú)法使用邏輯編程的方式進(jìn)行編程。它只是約定了一種文檔的展現(xiàn)方式。通過(guò)約定不同的標(biāo)簽所代表的不同含義,從而在瀏覽器端渲染出豐富多彩的網(wǎng)頁(yè)。主要包含頭部和主體兩大部分。HTML 主要負(fù)責(zé)頁(yè)面的結(jié)構(gòu)。
2.2 CSS
級(jí)聯(lián)樣式表,有時(shí)候也叫做風(fēng)格樣式表。需要配合 HTML 來(lái)使用,從而提供豐富的渲染效果。
2.3 Javascript
是一種腳本語(yǔ)言,廣泛的用于前端的邏輯實(shí)現(xiàn)。通過(guò) javascript 可以實(shí)現(xiàn)許多定制的效果,是前端使用的最廣泛的編程語(yǔ)言。
綜上所述,HTML,CSS,Javascript 共同構(gòu)成了網(wǎng)頁(yè)的豐富的樣式。三者缺一不可,沒(méi)有 HTML,CSS, Javascript 就是無(wú)源之水,毫無(wú)意思;沒(méi)有 CSS,網(wǎng)頁(yè)就失去了色彩和樣式,最終會(huì)使得 HTML千篇一律;沒(méi)有 Javascript,我們就無(wú)法看到動(dòng)態(tài)的網(wǎng)頁(yè),只是一潭死水。
3. 爬蟲抓取原理
爬蟲爬取的數(shù)據(jù)其實(shí)就是網(wǎng)頁(yè)上面的內(nèi)容,我們需要通過(guò)特定的工具對(duì)網(wǎng)頁(yè)進(jìn)行分析,比如說(shuō) Beautiful Soup。然后提取出 HTML 中的特定標(biāo)簽下的數(shù)據(jù)。然后,將數(shù)據(jù)進(jìn)行持久化保存,方便日后的數(shù)據(jù)的分析。
簡(jiǎn)單點(diǎn)講,我們使用爬蟲,最根本的目的是爬取網(wǎng)頁(yè)中對(duì)我們有價(jià)值的信息和數(shù)據(jù)。所以,我們大部分爬取的工作,都是在篩選我們有用的信息,并剔除掉無(wú)用的信息。這就是爬蟲核心所在。
4. 小結(jié)
通過(guò)這一小節(jié),我們認(rèn)識(shí)了網(wǎng)頁(yè)的基本元素,在我們使用的爬蟲的過(guò)程中,隨時(shí)隨地都需要分析網(wǎng)頁(yè)的構(gòu)成要素,因此,熟練的掌握的網(wǎng)頁(yè)的基本元素的構(gòu)成,對(duì)于我們后面進(jìn)行網(wǎng)頁(yè)的分析很有幫助。