1?? html語義化:
根據(jù)內(nèi)容的結(jié)構(gòu)化(內(nèi)容語義化),選擇合適的標(biāo)簽(代碼語義化)便于開發(fā)者閱讀和寫出更優(yōu)雅的代碼的同時(shí)讓瀏覽器的爬蟲和機(jī)器很好地解析。
<1>為什么要語義化?
為了在沒有CSS的情況下,頁面也能呈現(xiàn)出很好地內(nèi)容結(jié)構(gòu)、代碼結(jié)構(gòu):為了裸奔時(shí)好看;
用戶體驗(yàn):例如title、alt用于解釋名詞或解釋圖片信息、label標(biāo)簽的活用;
有利于SEO:和搜索引擎建立良好溝通,有助于爬蟲抓取更多的有效信息:爬蟲依賴于標(biāo)簽來確定上下文和各個(gè)關(guān)鍵字的權(quán)重;
方便其他設(shè)備解析(如屏幕閱讀器、盲人閱讀器、移動(dòng)設(shè)備)以意義的方式來渲染網(wǎng)頁;
便于團(tuán)隊(duì)開發(fā)和維護(hù),語義化更具可讀性,遵循W3C標(biāo)準(zhǔn)的團(tuán)隊(duì)都遵循這個(gè)標(biāo)準(zhǔn),可以減少差異化。
<2>寫HTML代碼時(shí)應(yīng)注意什么?
盡可能少的使用無語義的標(biāo)簽div和span;
在語義不明顯時(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)簽包起來,并用legend標(biāo)簽說明表單的用途;
每個(gè)input標(biāo)簽對(duì)應(yīng)的說明文本都需要使用label標(biāo)簽,并且通過為input設(shè)置id屬性,在lable標(biāo)簽中設(shè)置for=someld來讓說明文本和相對(duì)應(yīng)的input關(guān)聯(lián)起來。
<3>HTML5新增了哪些語義標(biāo)簽
在HTML 5出來之前,我們用div來表示頁面章節(jié),但是這些div都沒有實(shí)際意義。(即使我們用css樣式的id和class形容這塊內(nèi)容的意義)。這些標(biāo)簽只是我們提供給瀏覽器的指令,只是定義一個(gè)網(wǎng)頁的某些部分。但現(xiàn)在,那些之前沒“意義”的標(biāo)簽因?yàn)橐驗(yàn)閔tml5的出現(xiàn)消失了,這就是我們平時(shí)說的“語義”。
1,header 元素代表“網(wǎng)頁”或“section”的頁眉。通常包含h1-h6元素或hgroup,作為整個(gè)頁面或者一個(gè)內(nèi)容塊的標(biāo)題。也可以包裹一節(jié)的目錄部分,一個(gè)搜索框,一個(gè)nav,或者任何相關(guān)logo。
2,footer元素代表“網(wǎng)頁”或“section”的頁腳,通常含有該節(jié)的一些基本信息,譬如:作者,相關(guān)文檔鏈接,版權(quán)資料。如果footer元素包含了整個(gè)節(jié),那么它們就代表附錄,索引,提拔,許可協(xié)議,標(biāo)簽,類別等一些其他類似信息。
3,hgroup元素代表“網(wǎng)頁”或“section”的標(biāo)題,當(dāng)元素有多個(gè)層級(jí)時(shí),該元素可以將h1到h6元素放在其內(nèi),譬如文章的主標(biāo)題和副標(biāo)題的組合。
4,nav元素代表頁面的導(dǎo)航鏈接區(qū)域。用于定義頁面的主要導(dǎo)航部分。
5,aside元素被包含在article元素中作為主要內(nèi)容的附屬信息部分,其中的內(nèi)容可以是與當(dāng)前文章有關(guān)的相關(guān)資料、標(biāo)簽、名次解釋等。(特殊的section)。在article元素之外使用作為頁面或站點(diǎn)全局的附屬信息部分。最典型的是側(cè)邊欄,其中的內(nèi)容可以是日志串連,其他組的導(dǎo)航,甚至廣告,這些內(nèi)容相關(guān)的頁面。
6,section元素代表文檔中的“節(jié)”或“段”,“段”可以是指一篇文章里按照主題的分段;“節(jié)”可以是指一個(gè)頁面里的分組。section通常還帶標(biāo)題,雖然html5中section會(huì)自動(dòng)給標(biāo)題h1-h6降級(jí),但是最好手動(dòng)給他們降級(jí)。
7,article元素最容易跟section和div容易混淆,其實(shí)article代表一個(gè)在文檔,頁面或者網(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頁腳。
—如果在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;沒有語義的:用div。
—address代表區(qū)塊容器,必須是作為聯(lián)系信息出現(xiàn),郵編地址、郵件地址等等,一般出現(xiàn)在footer。
—h1-h6因?yàn)閔group,section和article的出現(xiàn),h1-h6定義也發(fā)生了變化,允許一張頁面出現(xiàn)多個(gè)h1。
2 SEO的原理
SEO概論:SEO是Search Engine Optimization的簡(jiǎn)稱,SEO中文意思是搜索引擎優(yōu)化。
搜索引擎優(yōu)化SEO是建立在用戶搜索體驗(yàn)為中心的基礎(chǔ)上,通過提高網(wǎng)頁級(jí)別、建立合理的網(wǎng)站鏈接結(jié)構(gòu)/目錄結(jié)構(gòu)、豐富網(wǎng)站內(nèi)容及表達(dá)形式,使網(wǎng)站自身設(shè)計(jì)符合搜索引擎規(guī)則、對(duì)搜索引擎友好,進(jìn)而在搜索引擎上獲得較高的排序權(quán)重。
它是通過研究搜索引擎對(duì)網(wǎng)頁的抓取規(guī)則,以及搜索結(jié)果排序算法,來對(duì)網(wǎng)頁進(jìn)行相關(guān)的優(yōu)化,使其更多的內(nèi)容被搜索引擎收錄,同時(shí)針對(duì)關(guān)鍵詞獲得搜索結(jié)果中更高的排名,從而提高網(wǎng)站訪問量的一種策略。
搜索引擎工作主要分為:
1.頁面抓取
2.頁面分析
3.建立索引
4.頁面排序
1,搜索引擎-抓取頁面
這個(gè)工作主要由叫做“機(jī)器人(robot)”、“爬蟲(crawler)”或者“蜘蛛(spider)”的程序,根據(jù)一定規(guī)則掃描存在于互聯(lián)網(wǎng)上的網(wǎng)站,并沿著網(wǎng)頁上的鏈接從一個(gè)網(wǎng)頁到另一個(gè)網(wǎng)頁,從一個(gè)網(wǎng)站到另一個(gè)網(wǎng)站。
為保證采集的資料最新,它還會(huì)回訪已抓取過的網(wǎng)頁。
這個(gè)工作是搜索引擎所有工作的基礎(chǔ)。
結(jié)論:想要獲得更多的網(wǎng)站排名,網(wǎng)站必須要有更多,更新的信息被搜索引擎抓取,這個(gè)也就是網(wǎng)站需要每天堅(jiān)持更新的原因。
2,搜索引擎-頁面分析
對(duì)頁面內(nèi)容進(jìn)行分析,提取相關(guān)網(wǎng)頁信息(包括網(wǎng)頁所在URL、編碼類型、頁面內(nèi)容包含的所有關(guān)鍵詞、關(guān)鍵詞位置、生成時(shí)間、大小、與其它網(wǎng)頁的鏈接關(guān)系等)。
搜索引擎所分析的內(nèi)容,也就是我們SEO所要做得工作內(nèi)容。
3,搜索引擎-建立索引
建立索引:就是搜索引擎通過對(duì)網(wǎng)站的內(nèi)容進(jìn)行抓取,分析后 對(duì)每個(gè)抓取的頁面進(jìn)行一個(gè)資源入庫。在用戶搜索的時(shí)候再進(jìn)行調(diào)取,展現(xiàn)到用戶眼前。
所以我們有更多的頁面被搜索引擎搜索收錄,才能有更多的機(jī)會(huì)展示在用眼前。
4,搜索引擎-頁面排序
用戶在搜索引擎中輸入查詢條件后,搜索引擎就在數(shù)據(jù)庫中檢索相關(guān)的信息,并將檢索結(jié)果返回給用戶,搜索引擎在往用戶端返回?cái)?shù)據(jù)的時(shí)候,并不是隨機(jī)的,而是按照一定的計(jì)算方法進(jìn)行排序的。
涉及到排序的因素主要有:鏈接權(quán)重,用戶行為。
結(jié)合頁面的內(nèi)外因素,計(jì)算出頁面與某個(gè)關(guān)鍵字的相關(guān)程度,從而得到與該關(guān)鍵字相關(guān)的頁面索引列表。
總結(jié):想做好SEO,最重要是要成為搜索引擎的知己,做搜索引擎之所想。得搜索引擎之所得,互惠共贏才是長(zhǎng)久之計(jì)。
3 什么是爬蟲
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動(dòng)地抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動(dòng)索引、模擬程序或者蠕蟲。
4 怎么去寫一個(gè)爬蟲
—定義已訪問隊(duì)列,待訪問隊(duì)列和爬取得URL的哈希表,包括出隊(duì)列,入隊(duì)列,判斷隊(duì)列是否空等操作
—定義DownLoadFile類,根據(jù)得到的url,爬取網(wǎng)頁內(nèi)容,下載到本地保存。此處需要引用commons-httpclient.jar,commons-codec.jar,commons-logging.jar。
—定義HtmlParserTool類,用來獲得網(wǎng)頁中的超鏈接(包括a標(biāo)簽,frame中的src等等),即為了得到子節(jié)點(diǎn)的URL。需要引入htmlparser.jar
—編寫測(cè)試類MyCrawler,用來測(cè)試爬取效果