Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 在线亚洲自拍,91久久精品一区二区三区,99在线精品视频在线观看

          整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          認識HTML

          認識HTML

          TML俗稱“超文本標記語言”

          HTML的頁面也就是我們常說的網頁是一種特殊的文件,它的擴展名是點htm或者點HTML,默認使用瀏覽器打開,在瀏覽器中,不能直接編輯HTML

          HTML,主要負責內容;CSS主要負責樣式;js主要負責特效

          局和腳部是 HTML 頁面中兩個重要的區域。布局區域用于組織頁面上的內容,而腳部區域通常包含與頁面內容無關但重要的信息。


          布局區域

          布局區域用于將頁面上的內容分組和排列。最常用的布局區域是:

          • 主內容區:包含頁面上的主要內容。
          • 側欄:包含與頁面內容相關的額外信息,例如導航菜單或側邊欄。
          • 腳部:包含與頁面內容無關但重要的信息,例如版權信息或聯系方法。

          腳部區域

          腳部區域通常包含以下內容:

          • 版權信息:表明頁面的所有權歸于特定個人或組織。
          • 聯系方式:提供與發送電子郵件或訪問其他網站的鏈接。
          • 社交媒體鏈接:提供與頁面或組織的社交媒體帳號。

          布局和腳部的組合

          布局區域可以包含腳部區域。例如,以下代碼展示了如何將腳部區域包含在布局區域內:

          html
          <!DOCTYPE html>
          <html>
          <head>
            <!-- ... -->
          </head>
          <body>
            <div id="layout">
              <!-- ... -->
              <footer>
                <p>? 20 vicisslet 20 vicisslet</p>
                <p>聯系:...</p>
                <p>社交媒體:...</p>
              </footer>
            </div>
          </body>
          </html>
          

          最佳實踐

          • 使用合適的布局區域來組織頁面內容。
          • 在腳部區域中提供與頁面內容無關但重要的信息。
          • 保持腳部區域簡短且易于瀏覽。

          結論

          布局和腳部是 HTML 頁面中兩個重要的區域。通過了解布局和腳部區域的用法,您可以創建擁有清晰結構和良好閱讀體驗的頁面。

          瀏覽器訪問網站時,頁面各不相同,你有沒有想過它為何會呈現這個樣子呢?本節中,我們就來了解一下網頁的組成、結構和節點等內容。

          網頁的組成

          網頁可以分為三大部分 —— HTML、CSS 和 JavaScript。如果把網頁比作一個人的話,HTML 相當于骨架,JavaScript 相當于肌肉,CSS 相當于皮膚,三者結合起來才能形成一個完善的網頁。下面我們分別來介紹一下這三部分的功能。

          (1)HTML

          HTML,其英文叫做 HyperText Markup Language,中文翻譯叫做超文本標記語言,但我們通常不會用中文翻譯來稱呼它,一般就叫 HTML。

          HTML 是用來描述網頁的一種語言,網頁包括文字、按鈕、圖片和視頻等各種復雜的元素,其基礎架構就是 HTML。不同類型的元素通過不同類型的標簽來表示,如圖片用 img 標簽表示,視頻用 video 標簽表示,段落用 p 標簽表示,它們之間的布局又常通過布局標簽 div 嵌套組合而成,各種標簽通過不同的排列和嵌套才形成了網頁的框架。

          那 HTML 長什么樣子呢?我們可以隨意打開一個網站,比如淘寶 https://www.taobao.com,然后右鍵菜單點擊“檢查元素”或者按 F12 快捷鍵,即可打開瀏覽器開發者工具,切換到 Elements 面板,這時候就可以看到這里呈現的就是淘寶網對應的 HTML,它包含了一系列標簽,瀏覽器解析這些標簽后,便會在網頁中渲染成一個個的節點,這便形成了我們平常看到的網頁。比如這里可以看到一個輸入框就對應一個 input 標簽,可以用于輸入文字。

          不同的標簽對應著不同的功能,這些標簽定義的節點相互嵌套和組合形成了復雜的層次關系,就形成了網頁的架構。

          (2)CSS

          HTML 定義了網頁的結構,但是只有 HTML 頁面的布局并不美觀,可能只是簡單的節點元素的排列。為了讓網頁看起來更好看一些,這里借助了 CSS。

          CSS,全稱叫作 Cascading Style Sheets,即層疊樣式表。“層疊” 是指當在 HTML 中引用了數個樣式文件,并且樣式發生沖突時,瀏覽器能依據層疊順序處理。“樣式” 指網頁中文字大小、顏色、元素間距、排列等格式。CSS 是目前唯一的網頁頁面排版樣式標準,有了它的幫助,頁面才會變得更為美觀。

          在上圖中,Styles 面板呈現的就是一系列 CSS 樣式,比如摘抄一段 CSS,內容如下:

          #head_wrapper.s-ps-islite .s-p-top {
            position: absolute;
            bottom: 40px;
            width: 100%;
            height: 181px;
          }

          這就是一個 CSS 樣式。大括號前面是一個 CSS 選擇器。此選擇器的意思是首先選中 id 為 head_wrapper 且 class 為 s-ps-islite 的節點,然后再選中其內部的 class 為 s-p-top 的節點。大括號內部寫的就是一條條樣式規則,例如 position 指定了這個節點的布局方式為絕對布局,bottom 指定節點的下邊距為 40 像素,width 指定了寬度為 100%,表示占滿父節點,height 則指定了節點的高度。也就是說,我們將位置、寬度、高度等樣式配置統一寫成這樣的形式,然后用大括號括起來,接著在開頭再加上 CSS 選擇器,這就代表這個樣式對 CSS 選擇器選中的節點生效,節點就會根據此樣式來展示了。

          在網頁中,一般會統一定義整個網頁的樣式規則,并寫入 CSS 文件中(其后綴為 css)。在 HTML 中,只需要用 link 標簽即可引入寫好的 CSS 文件,這樣整個頁面就會變得美觀、優雅。

          (3)JavaScript

          JavaScript,簡稱 JS,是一種腳本語言。HTML 和 CSS 配合使用,提供給用戶的只是一種靜態信息,缺乏交互性。我們在網頁里可能會看到一些交互和動畫效果,如下載進度條、提示框、輪播圖等,這通常就是 JavaScript 的功勞。它的出現使得用戶與信息之間不只是一種瀏覽與顯示的關系,而是實現了一種實時、動態、交互的頁面功能。

          JavaScript 通常也是以單獨的文件形式加載的,后綴為 js,在 HTML 中通過 script 標簽即可引入,例如:

          <script src="jquery-2.1.0.js"></script>

          綜上所述,HTML 定義了網頁的內容和結構,CSS 描述了網頁的樣式,JavaScript 定義了網頁的行為。

          2. 網頁的結構

          我們首先用例子來感受一下 HTML 的基本結構。新建一個文本文件,名稱叫做 test.html,內容如下:

          <!DOCTYPE html>
          <html>
            <head>
              <meta charset="UTF-8" />
              <title>This is a Demo</title>
            </head>
            <body>
              <div id="container">
                <div class="wrapper">
                  <h2 class="title">Hello World</h2>
                  <p class="text">Hello, this is a paragraph.</p>
                </div>
              </div>
            </body>
          </html>

          這就是一個最簡單的 HTML 實例。開頭用 DOCTYPE 定義了文檔類型,其次最外層是 html 標簽,最后還有對應的結束標簽來表示閉合,其內部是 head 標簽和 body 標簽,分別代表網頁頭和網頁體,它們也需要結束標簽。head 標簽內定義了一些頁面的配置和引用,如:

          <meta charset="UTF-8" />

          它指定了網頁的編碼為 UTF-8。

          title 標簽則定義了網頁的標題,會顯示在網頁的選項卡中,不會顯示在正文中。body 標簽內則是在網頁正文中顯示的內容。div 標簽定義了網頁中的區塊,它的 id 是 container,這是一個非常常用的屬性,且 id 的內容在網頁中是唯一的,我們可以通過它來獲取這個區塊。然后在此區塊內又有一個 div 標簽,它的 class 為 wrapper,這也是一個非常常用的屬性,經常與 CSS 配合使用來設定樣式。然后此區塊內部又有一個 h2 標簽,這代表一個二級標題。另外,還有一個 p 標簽,這代表一個段落。在這兩者中直接寫入相應的內容即可在網頁中呈現出來,它們也有各自的 class 屬性。

          將代碼保存后,雙擊該文件在瀏覽器中打開,可以看到如圖所示的內容。

          可以看到,選項卡上顯示了 This is a Demo 字樣,這是我們在 head 中的 title 里定義的文字。而網頁正文是 body 標簽內部定義的各個元素生成的,可以看到這里顯示了二級標題和段落。

          這個實例便是網頁的一般結構。一個網頁的標準形式是 html 標簽內嵌套 head 和 body 標簽,head 內定義網頁的配置和引用,body 內定義網頁的正文。

          3 節點樹及節點間的關系

          在 HTML 中,所有標簽定義的內容都是節點,它們構成了一個 HTML 節點樹,也稱之為 HTML DOM 樹。

          我們先看下什么是 DOM。DOM 是 W3C(萬維網聯盟)的標準,其英文全稱 Document Object Model,即文檔對象模型。它定義了訪問 HTML 和 XML 文檔的標準。根據 W3C 的 HTML DOM 標準,HTML 文檔中的所有內容都是節點。

          • 整個網站文檔是一個文檔節點。
          • 每個 html 標簽對應一個根元素節點,即上例中的 html 標簽,這屬于一個跟元素節點。
          • 節點內的文本是文本節點,比如 a 節點代表一個超鏈接,它內部的文本也被認為是一個文本節點。
          • 每個節點的屬性是屬性節點,比如 a 節點有一個 href 屬性,它就是一個屬性節點。
          • 注釋是注釋節點,在 HTML 中有特殊的語法會被解析為注釋,但其也會對應一個節點。

          所以,HTML DOM 將 HTML 文檔視作樹結構,這種結構被稱為節點樹,如圖所示:

          通過 HTML DOM,樹中的所有節點均可通過 JavaScript 訪問,所有 HTML 節點元素均可被修改,也可以被創建或刪除。

          節點樹中的節點彼此擁有層級關系。我們常用父(parent)、子(child)和兄弟(sibling)等術語描述這些關系。父節點擁有子節點,同級的子節點被稱為兄弟節點。

          在節點樹中,頂端節點稱為根(root)。除了根節點之外,每個節點都有父節點,同時可擁有任意數量的子節點或兄弟節點。圖展示了節點樹以及節點之間的關系。

          4. 選擇器

          我們知道網頁由一個個節點組成,CSS 選擇器會根據不同的節點設置不同的樣式規則,那么怎樣來定位節點呢?

          在 CSS 中,我們使用 CSS 選擇器來定位節點。例如,上例中 div 節點的 id 為 container,那么就可以表示為 #container,其中 # 開頭代表選擇 id,其后緊跟 id 的名稱。另外,如果我們想選擇 class 為 wrapper 的節點,便可以使用.wrapper,這里以點(.)開頭代表選擇 class,其后緊跟 class 的名稱。另外,還有一種選擇方式,那就是根據標簽名篩選,例如想選擇二級標題,直接用 h2 即可。這是最常用的 3 種表示,分別是根據 id、class、標簽名篩選,請牢記它們的寫法。

          另外,CSS 選擇器還支持嵌套選擇,各個選擇器之間加上空格分隔開便可以代表嵌套關系,如 #container .wrapper p 則代表先選擇 id 為 container 的節點,然后選中其內部的 class 為 wrapper 的節點,然后再進一步選中其內部的 p 節點。另外,如果不加空格,則代表并列關系,如 div#container .wrapper p.text 代表先選擇 id 為 container 的 div 節點,然后選中其內部的 class 為 wrapper 的節點,再進一步選中其內部的 class 為 text 的 p 節點。這就是 CSS 選擇器,其篩選功能還是非常強大的。

          我們可以在瀏覽器中測試 CSS 選擇器的效果,依然還是打開瀏覽器的開發者工具,然后按快捷鍵 Ctrl + F(如果你用的是 Mac,則是 Command + F),這時候在左下角便會出現一個搜索框,如圖所示。

          這時候我們輸入 .title 就是選中了 class 為 title 的節點,這時候該節點就會被選中并在網頁中高亮顯示,如圖所示:

          輸入 div#container .wrapper p.text 就逐層選中了 id 為 container 中 class 為 wrapper 節點中的 p 節點,如圖所示:

          另外,CSS 選擇器還有一些其他語法規則,具體如下表所示。

          CSS 選擇器的其他語法規則

          選 擇 器

          例 子

          例子描述

          .class

          .intro

          選擇 class="intro" 的所有節點

          #id

          #firstname

          選擇 id="firstname" 的所有節點

          *

          *

          選擇所有節點

          element

          p

          選擇所有 p 節點

          element,element

          div,p

          選擇所有 div 節點和所有 p 節點

          element element

          div p

          選擇 div 節點內部的所有 p 節點

          element>element

          div>p

          選擇父節點為 div 節點的所有 p 節點

          element+element

          div+p

          選擇緊接在 div 節點之后的所有 p 節點

          [attribute]

          [target]

          選擇帶有 target 屬性的所有節點

          [attribute=value]

          [target=blank]

          選擇 target="blank" 的所有節點

          [attribute~=value]

          [title~=flower]

          選擇 title 屬性包含單詞 flower 的所有節點

          :link

          a:link

          選擇所有未被訪問的鏈接

          :visited

          a:visited

          選擇所有已被訪問的鏈接

          :active

          a:active

          選擇活動鏈接

          :hover

          a:hover

          選擇鼠標指針位于其上的鏈接

          :focus

          input:focus

          選擇獲得焦點的 input 節點

          :first-letter

          p:first-letter

          選擇每個 p 節點的首字母

          :first-line

          p:first-line

          選擇每個 p 節點的首行

          :first-child

          p:first-child

          選擇屬于父節點的第一個子節點的所有 p 節點

          :before

          p:before

          在每個 p 節點的內容之前插入內容

          :after

          p:after

          在每個 p 節點的內容之后插入內容

          :lang(language)

          p:lang

          選擇帶有以 it 開頭的 lang 屬性值的所有 p 節點

          element1~element2

          p~ul

          選擇前面有 p 節點的所有 ul 節點

          [attribute^=value]

          a[src^="https"]

          選擇其 src 屬性值以 https 開頭的所有 a 節點

          [attribute$=value]

          a[src$=".pdf"]

          選擇其 src 屬性以 .pdf 結尾的所有 a 節點

          [attribute*=value]

          a[src*="abc"]

          選擇其 src 屬性中包含 abc 子串的所有 a 節點

          :first-of-type

          p:first-of-type

          選擇屬于其父節點的首個 p 節點的所有 p 節點

          :last-of-type

          p:last-of-type

          選擇屬于其父節點的最后一個 p 節點的所有 p 節點

          :only-of-type

          p:only-of-type

          選擇屬于其父節點唯一的 p 節點的所有 p 節點

          :only-child

          p:only-child

          選擇屬于其父節點的唯一子節點的所有 p 節點

          :nth-child(n)

          p:nth-child

          選擇屬于其父節點的第二個子節點的所有 p 節點

          :nth-last-child(n)

          p:nth-last-child

          同上,從最后一個子節點開始計數

          :nth-of-type(n)

          p:nth-of-type

          選擇屬于其父節點第二個 p 節點的所有 p 節點

          :nth-last-of-type(n)

          p:nth-last-of-type

          同上,但是從最后一個子節點開始計數

          :last-child

          p:last-child

          選擇屬于其父節點最后一個子節點的所有 p 節點

          :root

          :root

          選擇文檔的根節點

          :empty

          p:empty

          選擇沒有子節點的所有 p 節點(包括文本節點)

          :target

          #news:target

          選擇當前活動的 #news 節點

          :enabled

          input:enabled

          選擇每個啟用的 input 節點

          :disabled

          input:disabled

          選擇每個禁用的 input 節點

          :checked

          input:checked

          選擇每個被選中的 input 節點

          :not(selector)

          :not

          選擇非 p 節點的所有節點

          ::selection

          ::selection

          選擇被用戶選取的節點部分

          另外,還有一種比較常用的選擇器 XPath,這種選擇方式后面會詳細介紹。

          5. 總結

          本節介紹了網頁的結構和節點間的關系,了解了這些內容,我們才有更加清晰的思路去解析和提取網頁內容。

          本節參考來源:

          • 文檔 - HTML - MDN Web Docs:https://developer.mozilla.org/en-US/docs/Web/HTML
          • 文檔 - JavaScript - MDN Web Docs:https://developer.mozilla.org/en-US/docs/Web/JavaScript
          • 文檔 - HTML DOM 節點 - W3School:http://www.w3school.com.cn/htmldom/dom_nodes.asp
          • 文檔 - HTML - 維基百科:https://en.wikipedia.org/wiki/HTML
          • 文檔 - CSS Selector - W3School:https://www.w3schools.com/cssref/css_selectors.asp

          主站蜘蛛池模板: 亚洲香蕉久久一区二区| 国产精品美女一区二区视频 | 一区二区三区精密机械| 精品无人区一区二区三区在线| 久久毛片一区二区| 日本人真淫视频一区二区三区| 国产色精品vr一区区三区| 亚洲一区二区三区无码国产| 一区二区三区中文| 精品无码人妻一区二区三区品| 波多野结衣av高清一区二区三区| 久久4k岛国高清一区二区| 在线精品一区二区三区电影| 亚洲国产精品一区| 亚洲一区二区三区在线视频| 日本韩国一区二区三区| 无码少妇一区二区性色AV | 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 国产肥熟女视频一区二区三区 | 精品人妻一区二区三区四区 | 中文字幕一区在线| 国产丝袜无码一区二区视频| 成人中文字幕一区二区三区| 亚洲AV午夜福利精品一区二区 | 午夜影院一区二区| 亚洲综合在线成人一区| 99精品一区二区三区| 亚州日本乱码一区二区三区 | 好吊妞视频一区二区| 在线观看日本亚洲一区| 中文字幕无线码一区2020青青| 少妇人妻精品一区二区三区| 国产精品丝袜一区二区三区 | 国产主播福利一区二区| 亚洲国产精品一区二区三区在线观看| 无码精品人妻一区二区三区人妻斩| 一区二区三区杨幂在线观看| 亚洲免费视频一区二区三区| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产aⅴ精品一区二区三区久久| 成人在线一区二区|