1?? html語(yǔ)義化:
根據(jù)內(nèi)容的結(jié)構(gòu)化(內(nèi)容語(yǔ)義化)谱邪,選擇合適的標(biāo)簽(代碼語(yǔ)義化)便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼的同時(shí)讓瀏覽器的爬蟲和機(jī)器很好地解析炮捧。
<1>為什么要語(yǔ)義化?
為了在沒(méi)有CSS的情況下惦银,頁(yè)面也能呈現(xiàn)出很好地內(nèi)容結(jié)構(gòu)咆课、代碼結(jié)構(gòu):為了裸奔時(shí)好看;
用戶體驗(yàn):例如title扯俱、alt用于解釋名詞或解釋圖片信息书蚪、label標(biāo)簽的活用;
有利于SEO:和搜索引擎建立良好溝通蘸吓,有助于爬蟲抓取更多的有效信息:爬蟲依賴于標(biāo)簽來(lái)確定上下文和各個(gè)關(guān)鍵字的權(quán)重善炫;
方便其他設(shè)備解析(如屏幕閱讀器、盲人閱讀器库继、移動(dòng)設(shè)備)以意義的方式來(lái)渲染網(wǎng)頁(yè)箩艺;
便于團(tuán)隊(duì)開發(fā)和維護(hù)窜醉,語(yǔ)義化更具可讀性,遵循W3C標(biāo)準(zhǔn)的團(tuán)隊(duì)都遵循這個(gè)標(biāo)準(zhǔn)艺谆,可以減少差異化榨惰。
<2>寫HTML代碼時(shí)應(yīng)注意什么?
盡可能少的使用無(wú)語(yǔ)義的標(biāo)簽div和span静汤;
在語(yǔ)義不明顯時(shí)琅催,既可以使用div或者p時(shí),盡量用p, 因?yàn)閜在默認(rèn)情況下有上下間距虫给,對(duì)兼容特殊終端有利藤抡;
不要使用純樣式標(biāo)簽,如:b抹估、font缠黍、u等,改用css設(shè)置药蜻。
需要強(qiáng)調(diào)的文本瓷式,可以包含在strong或者em標(biāo)簽中(瀏覽器預(yù)設(shè)樣式,能用CSS指定就不用他們)语泽,strong默認(rèn)樣式是加粗(不要用b)贸典,em是斜體(不用i);
使用表格時(shí)踱卵,標(biāo)題要用caption廊驼,表頭用thead,主體部分用tbody包圍惋砂,尾部用tfoot包圍蔬充。表頭和一般單元格要區(qū)分開,表頭用th班利,單元格用td饥漫;
表單域要用fieldset標(biāo)簽包起來(lái),并用legend標(biāo)簽說(shuō)明表單的用途罗标;
每個(gè)input標(biāo)簽對(duì)應(yīng)的說(shuō)明文本都需要使用label標(biāo)簽庸队,并且通過(guò)為input設(shè)置id屬性,在lable標(biāo)簽中設(shè)置for=someld來(lái)讓說(shuō)明文本和相對(duì)應(yīng)的input關(guān)聯(lián)起來(lái)闯割。
<3>HTML5新增了哪些語(yǔ)義標(biāo)簽
在HTML 5出來(lái)之前彻消,我們用div來(lái)表示頁(yè)面章節(jié),但是這些div都沒(méi)有實(shí)際意義宙拉。(即使我們用css樣式的id和class形容這塊內(nèi)容的意義)宾尚。這些標(biāo)簽只是我們提供給瀏覽器的指令,只是定義一個(gè)網(wǎng)頁(yè)的某些部分。但現(xiàn)在煌贴,那些之前沒(méi)“意義”的標(biāo)簽因?yàn)橐驗(yàn)閔tml5的出現(xiàn)消失了御板,這就是我們平時(shí)說(shuō)的“語(yǔ)義”。
1,header 元素代表“網(wǎng)頁(yè)”或“section”的頁(yè)眉牛郑。通常包含h1-h6元素或hgroup怠肋,作為整個(gè)頁(yè)面或者一個(gè)內(nèi)容塊的標(biāo)題。也可以包裹一節(jié)的目錄部分淹朋,一個(gè)搜索框笙各,一個(gè)nav,或者任何相關(guān)logo。
2,footer元素代表“網(wǎng)頁(yè)”或“section”的頁(yè)腳,通常含有該節(jié)的一些基本信息曹仗,譬如:作者,相關(guān)文檔鏈接春感,版權(quán)資料。如果footer元素包含了整個(gè)節(jié)虏缸,那么它們就代表附錄,索引嫩实,提拔刽辙,許可協(xié)議,標(biāo)簽甲献,類別等一些其他類似信息宰缤。
3,hgroup元素代表“網(wǎng)頁(yè)”或“section”的標(biāo)題,當(dāng)元素有多個(gè)層級(jí)時(shí)晃洒,該元素可以將h1到h6元素放在其內(nèi)慨灭,譬如文章的主標(biāo)題和副標(biāo)題的組合。
4,nav元素代表頁(yè)面的導(dǎo)航鏈接區(qū)域球及。用于定義頁(yè)面的主要導(dǎo)航部分氧骤。
5,aside元素被包含在article元素中作為主要內(nèi)容的附屬信息部分,其中的內(nèi)容可以是與當(dāng)前文章有關(guān)的相關(guān)資料吃引、標(biāo)簽筹陵、名次解釋等。(特殊的section)镊尺。在article元素之外使用作為頁(yè)面或站點(diǎn)全局的附屬信息部分朦佩。最典型的是側(cè)邊欄,其中的內(nèi)容可以是日志串連庐氮,其他組的導(dǎo)航语稠,甚至廣告,這些內(nèi)容相關(guān)的頁(yè)面弄砍。
6,section元素代表文檔中的“節(jié)”或“段”仙畦,“段”可以是指一篇文章里按照主題的分段输涕;“節(jié)”可以是指一個(gè)頁(yè)面里的分組。section通常還帶標(biāo)題议泵,雖然html5中section會(huì)自動(dòng)給標(biāo)題h1-h6降級(jí)占贫,但是最好手動(dòng)給他們降級(jí)。
7,article元素最容易跟section和div容易混淆先口,其實(shí)article代表一個(gè)在文檔型奥,頁(yè)面或者網(wǎng)站中自成一體的內(nèi)容,其目的是為了讓開發(fā)者獨(dú)立開發(fā)或重用碉京。譬如論壇的帖子厢汹,博客上的文章,一篇用戶的評(píng)論谐宙,一個(gè)互動(dòng)的widget小工具烫葬。(特殊的section)。除了它的內(nèi)容凡蜻,article會(huì)有一個(gè)標(biāo)題(通常會(huì)在header里)搭综,會(huì)有一個(gè)footer頁(yè)腳。
—如果在article內(nèi)部再嵌套article划栓,那就代表內(nèi)嵌的article是與它外部的內(nèi)容有關(guān)聯(lián)的兑巾,如博客文章下面的評(píng)論。
—文章里的章節(jié)忠荞,一個(gè)article里的section實(shí)例蒋歌。因?yàn)槲恼聝?nèi)section部分雖然也是獨(dú)立的部分,但是它門只能算是組成整體的一部分委煤,從屬關(guān)系堂油,article是大主體,section是構(gòu)成這個(gè)大主體的一部分碧绞。本網(wǎng)站的全部文章都是article嵌套一個(gè)個(gè)section章節(jié)府框,這樣能讓瀏覽器更容易區(qū)分各個(gè)章節(jié)所包括的內(nèi)容。
—一個(gè)section里的article實(shí)例讥邻。設(shè)計(jì)師寓免、程序員、前端工程師都是一個(gè)獨(dú)立的整體计维,他們組成了網(wǎng)站制作基本配備袜香,當(dāng)然還有其他成員~~。設(shè)計(jì)師鲫惶、程序員蜈首、前端工程師就像article,是一個(gè)個(gè)獨(dú)立的整體,而section將這些自成一體的article包裹欢策,就組成了一個(gè)團(tuán)體吆寨。
article使用注意:自身獨(dú)立的情況下:用article;是相關(guān)內(nèi)容:用section踩寇;沒(méi)有語(yǔ)義的:用div啄清。
—address代表區(qū)塊容器,必須是作為聯(lián)系信息出現(xiàn)俺孙,郵編地址辣卒、郵件地址等等,一般出現(xiàn)在footer。
—h1-h6因?yàn)閔group睛榄,section和article的出現(xiàn)荣茫,h1-h6定義也發(fā)生了變化,允許一張頁(yè)面出現(xiàn)多個(gè)h1场靴。
2 SEO的原理
SEO概論:SEO是Search Engine Optimization的簡(jiǎn)稱,SEO中文意思是搜索引擎優(yōu)化啡莉。
搜索引擎優(yōu)化SEO是建立在用戶搜索體驗(yàn)為中心的基礎(chǔ)上,通過(guò)提高網(wǎng)頁(yè)級(jí)別、建立合理的網(wǎng)站鏈接結(jié)構(gòu)/目錄結(jié)構(gòu)旨剥、豐富網(wǎng)站內(nèi)容及表達(dá)形式,使網(wǎng)站自身設(shè)計(jì)符合搜索引擎規(guī)則咧欣、對(duì)搜索引擎友好,進(jìn)而在搜索引擎上獲得較高的排序權(quán)重。
它是通過(guò)研究搜索引擎對(duì)網(wǎng)頁(yè)的抓取規(guī)則轨帜,以及搜索結(jié)果排序算法魄咕,來(lái)對(duì)網(wǎng)頁(yè)進(jìn)行相關(guān)的優(yōu)化,使其更多的內(nèi)容被搜索引擎收錄阵谚,同時(shí)針對(duì)關(guān)鍵詞獲得搜索結(jié)果中更高的排名,從而提高網(wǎng)站訪問(wèn)量的一種策略烟具。
搜索引擎工作主要分為:
1.頁(yè)面抓取
2.頁(yè)面分析
3.建立索引
4.頁(yè)面排序
1梢什,搜索引擎-抓取頁(yè)面
這個(gè)工作主要由叫做“機(jī)器人(robot)”、“爬蟲(crawler)”或者“蜘蛛(spider)”的程序朝聋,根據(jù)一定規(guī)則掃描存在于互聯(lián)網(wǎng)上的網(wǎng)站嗡午,并沿著網(wǎng)頁(yè)上的鏈接從一個(gè)網(wǎng)頁(yè)到另一個(gè)網(wǎng)頁(yè),從一個(gè)網(wǎng)站到另一個(gè)網(wǎng)站冀痕。
為保證采集的資料最新荔睹,它還會(huì)回訪已抓取過(guò)的網(wǎng)頁(yè)。
這個(gè)工作是搜索引擎所有工作的基礎(chǔ)言蛇。
結(jié)論:想要獲得更多的網(wǎng)站排名僻他,網(wǎng)站必須要有更多腊尚,更新的信息被搜索引擎抓取吨拗,這個(gè)也就是網(wǎng)站需要每天堅(jiān)持更新的原因。
2,搜索引擎-頁(yè)面分析
對(duì)頁(yè)面內(nèi)容進(jìn)行分析劝篷,提取相關(guān)網(wǎng)頁(yè)信息(包括網(wǎng)頁(yè)所在URL哨鸭、編碼類型、頁(yè)面內(nèi)容包含的所有關(guān)鍵詞娇妓、關(guān)鍵詞位置像鸡、生成時(shí)間、大小哈恰、與其它網(wǎng)頁(yè)的鏈接關(guān)系等)只估。
搜索引擎所分析的內(nèi)容,也就是我們SEO所要做得工作內(nèi)容蕊蝗。
3仅乓,搜索引擎-建立索引
建立索引:就是搜索引擎通過(guò)對(duì)網(wǎng)站的內(nèi)容進(jìn)行抓取,分析后 對(duì)每個(gè)抓取的頁(yè)面進(jìn)行一個(gè)資源入庫(kù)蓬戚。在用戶搜索的時(shí)候再進(jìn)行調(diào)取夸楣,展現(xiàn)到用戶眼前。
所以我們有更多的頁(yè)面被搜索引擎搜索收錄,才能有更多的機(jī)會(huì)展示在用眼前子漩。
4豫喧,搜索引擎-頁(yè)面排序
用戶在搜索引擎中輸入查詢條件后,搜索引擎就在數(shù)據(jù)庫(kù)中檢索相關(guān)的信息幢泼,并將檢索結(jié)果返回給用戶紧显,搜索引擎在往用戶端返回?cái)?shù)據(jù)的時(shí)候,并不是隨機(jī)的缕棵,而是按照一定的計(jì)算方法進(jìn)行排序的孵班。
涉及到排序的因素主要有:鏈接權(quán)重,用戶行為招驴。
結(jié)合頁(yè)面的內(nèi)外因素篙程,計(jì)算出頁(yè)面與某個(gè)關(guān)鍵字的相關(guān)程度,從而得到與該關(guān)鍵字相關(guān)的頁(yè)面索引列表别厘。
總結(jié):想做好SEO虱饿,最重要是要成為搜索引擎的知己,做搜索引擎之所想触趴。得搜索引擎之所得氮发,互惠共贏才是長(zhǎng)久之計(jì)。
3 什么是爬蟲
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁(yè)蜘蛛冗懦,網(wǎng)絡(luò)機(jī)器人爽冕,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁(yè)追逐者)披蕉,是一種按照一定的規(guī)則扇售,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本前塔。另外一些不常使用的名字還有螞蟻、自動(dòng)索引承冰、模擬程序或者蠕蟲华弓。
4 怎么去寫一個(gè)爬蟲
—定義已訪問(wèn)隊(duì)列,待訪問(wèn)隊(duì)列和爬取得URL的哈希表困乒,包括出隊(duì)列寂屏,入隊(duì)列,判斷隊(duì)列是否空等操作
—定義DownLoadFile類娜搂,根據(jù)得到的url迁霎,爬取網(wǎng)頁(yè)內(nèi)容,下載到本地保存百宇。此處需要引用commons-httpclient.jar考廉,commons-codec.jar,commons-logging.jar携御。
—定義HtmlParserTool類昌粤,用來(lái)獲得網(wǎng)頁(yè)中的超鏈接(包括a標(biāo)簽,frame中的src等等)啄刹,即為了得到子節(jié)點(diǎn)的URL涮坐。需要引入htmlparser.jar
—編寫測(cè)試類MyCrawler,用來(lái)測(cè)試爬取效果