【0基礎學爬蟲】爬蟲基礎之網頁基本結構

来源:https://www.cnblogs.com/ikdl/archive/2023/03/10/17202720.html
-Advertisement-
Play Games

大數據時代,各行各業對數據採集的需求日益增多,網路爬蟲的運用也更為廣泛,越來越多的人開始學習網路爬蟲這項技術,K哥爬蟲此前已經推出不少爬蟲進階、逆向相關文章,為實現從易到難全方位覆蓋,特設【0基礎學爬蟲】專欄,幫助小白快速入門爬蟲,本期為網頁基本結構介紹。 網頁概述 網頁是互聯網應用的一種形態,是組 ...


k哥爬蟲

大數據時代,各行各業對數據採集的需求日益增多,網路爬蟲的運用也更為廣泛,越來越多的人開始學習網路爬蟲這項技術,K哥爬蟲此前已經推出不少爬蟲進階、逆向相關文章,為實現從易到難全方位覆蓋,特設【0基礎學爬蟲】專欄,幫助小白快速入門爬蟲,本期為網頁基本結構介紹。

網頁概述

網頁是互聯網應用的一種形態,是組成網站的基本元素。它是一個包含HTML標簽的純文本文件,可以存放在世界上任意一臺電腦中。網頁可以被看作為承載各種網站應用和信息的容器,網站的可視化信息都通過網頁來進行展示,為網站用戶提供一個友好的界面。

錶面上,網頁的組成可以分為文字、圖片、音頻、視頻、超鏈接等元素構成,這些元素是用戶能夠直接看到的。但在本質上,網頁的組成分為三部分:

  • HTML

HTML的全稱為超文本標記語言,是一種標記語言,它是標準通用標記語言下的一個應用,也是一種規範,一種標準,它通過標記符號來標記要顯示的網頁中的各個部分。HTML文本是由HTML命令組成的描述性文本,HTML命令可以說明文字、圖片、音頻、視頻、超鏈接等,用戶在網頁上看到的各種元素都是通過HTML文本來實現的。

  • CSS

網頁的基本元素是通過HTML來實現的,但是HTML只能實現最基本的網頁樣式。隨著HTML的發展,為了滿足網頁開發者的需求,CSS便孕育而生。

CSS全稱為層疊樣式表。它為HTML語言提供了一種樣式描述,定義了元素的顯示方式。提供了豐富的樣式定義以及設置文本和背景屬性的能力。CSS可以將所有的樣式聲明統一存放,進行統一管理。在CSS中,一個文件的樣式可以從其他的樣式表中繼承。讀者在有些地方可以使用他自己更喜歡的樣式,在其他地方則繼承或“層疊”作者的樣式。這種層疊的方式使作者和讀者都可以靈活地加入自己的設計,混合每個人的愛好。

  • JavaScript

JavaScript(JS)是一種面向對象的解釋型腳本語言,它具有簡單、動態、跨平臺的特點。它被廣泛應用與Web開發中,幫助開發者構建可拓展的互動式Web應用。JavaScript由三部分組成:

  • ECMAScript,描述了JS語言的基本語法與基本對象。
  • 文檔對象模型(DOM),提供了處理網頁結構內容的方法與介面。
  • 瀏覽器對象模型(BOM),提供了獨立於內容而與瀏覽器視窗進行交互的方法與介面。

基本結構

網頁的基本結構大致可以分為四部分:Doctype聲明、html元素、head元素和body元素。

  • Doctype: 用來聲明文檔類型。它在HTML中的作用就是告訴瀏覽器以何種方式渲染頁面。
  • html: html元素是網頁的根元素,網頁中的內容都會包含在html標簽中。
  • head: head是所有頭部元素的容器。被用來引用腳本文件、指示樣式表存於何處。
  • body: body是網頁的主體元素,用戶在網頁上瀏覽到的信息主要都存在於body之中,它包含網頁文檔的所有內容,如段落,列表,鏈接,圖像,表格等。

2.gif

元素、標簽與屬性

元素(Element)是網頁的一部分,是構成網頁的基本單位,實際上一個網頁就是由多個元素構成的的文本文件。
標簽(Tag)的作用就是用來定義元素。大多數的標簽都是成對使用的,它存在一個開始標簽與一個結尾標簽,開始與結尾標簽中間包含該元素的文本信息。

<div>這是一個div標簽</div>
<p>這是一個p標簽</p>

也有少部分的標簽不成對。

<input>
<img>
<hr>
...

屬性(attribute)主要是用來為標簽添加額外的信息,屬性的定義一般在開始標簽中,以鍵值對的形式出現(name="value"
),屬性的值應始終包括在引號內,屬性和屬性值對大小寫不敏感,但是推薦使用小寫的屬性與屬性值。一個標簽可以擁有多個屬性,也可以沒有屬性,開發者沒有為標簽定義屬性的話則會使用預設屬性。

<a href="https://www.kuaidaili.com/">這是一個a標簽,href是我的屬性。</a>

屬性在HTML中被分為兩種:通用屬性和專用屬性。 通用屬性適用於大部分或所有標簽之中,如:

  • class:規定元素的類名
  • id:規定元素的唯一id
  • style:規定元素的行內樣式
  • title:規定元素的額外信息

專用屬性適用於小部分標簽或特定標簽,如:

  • href:主要用於a標簽與link標簽中,規定元素的超鏈接地址
  • alt:主要用於img標簽與area標簽中,規定在圖像無法顯示時的替代文本

文檔對象模型DOM

DOM全稱即文檔對象模型,是W3C制定的標準介面規範,是一種處理HTML和XML文件的標準API。DOM將HTML文本作為一個樹形結構,DOM樹的每個結點都表示了一個HTML標簽或HTML標簽內的文本項,它將網頁與腳本或編程語言連接起來。

1.png

通過這個DOM樹,開發者可以通過JavaScript來創建動態HTML,開發者藉助JavaScript可以實現:

  • 動態改變頁面中的所有HTML元素
  • 改變頁面中的所有HTML屬性
  • 改變頁面中的所有CSS樣式
  • 刪除已有的HTML元素和屬性
  • 添加新的HTML元素和屬性
  • 對頁面中所有已有的HTML事件作出反應
  • 在頁面中創建新的HTML事件

DOM提供了一系列API來實現這些操作。

  • document.createElement:創建元素節點。

    document.write:向文檔寫入內容。

    element.innerHTML:向標簽元素中添加內容。

  • element.removeChild:從DOM中刪除一個子節點並返回刪除的節點。

    element.remove:把元素從它所屬的DOM樹中刪除。

    element.removeAttribute:從指定的元素中刪除一個屬性。

  • element.appendChild:將一個節點插入到指定父節點列表的末尾處。

    parentNode.replaceChild:用一個節點替換當前節點中的一個子節點並返回被替換的節點。

    parentNode.insertBefore:將一個節點插入到當前節點中一個子節點之前。

  • document.getElementById:返回一個元素Id與指定Id相匹配的元素。

    document.getElementsByClassName:返回一個包含所有指定類名的元素的類數組對象。

    document.querySelector:返迴文檔中與指定選擇器或選擇器組匹配的第一個Element對象。

  • 事件處理

    EventTarget.addEventListener:將指定的監聽器註冊到EventTarget上,當事件被觸發時,指定的回調函數就會被執行。

    document.createEvent:創建一個指定類型的事件。

    EventTarget.removeEventListener:移除事件監聽器。

CSS選擇器

css選擇器是用來對HTML頁面中的元素進行控制,通過對CSS選擇器的瞭解,可以加深對網頁結構與節點的理解。常用的CSS選擇器主要分為:

1、元素選擇器: 通過標簽名{}的格式來選中對應標簽,如:p{}

2、類選擇器: 通過.類名{}的格式來選中對應類名的標簽,如:.page{},page為元素的類名。

3、id選擇器: 通過#id值{}的格式來選中對應id值的標簽,如:#key{},key為元素的id值。

4、群組選擇器: 通過選擇器1,選擇器2,選擇器3...{}的格式來選中對應選擇器的標簽,如:div,.page{},即選擇div標簽下類名為pagae的標簽。

5、子元素選擇器: 通過父元素 > 子元素{}的格式來選中對應父元素中對應子元素的標簽,如:div > p{},即選擇div標簽下的p標簽,子元素選擇器只能選擇直接後代,不能跨節點選取。

6、後代選擇器: 通過父元素 子元素{}的格式來選中對應父元素中對應子元素的標簽,如:div p{},即選擇div標簽下的p標簽,後代選擇器可以跨節點選取。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • GreatSQL社區原創內容未經授權不得隨意使用,轉載請聯繫小編並註明來源。 GreatSQL是MySQL的國產分支版本,使用上與MySQL一致。 作者: xryz 文章來源:GreatSQL社區原創 前言: 我們在日常維護資料庫的時候,經常會遇到查詢慢的語句,這時候一般會通過執行EXPLAIN去查 ...
  • 在《商業銀行理財業務監督管理辦法》《關於規範金融機構資產管理業務的指導意見》等理財新規、資管新規的要求下,大資管行業結構持續優化,存量金融風險明顯收斂。此外,也促使資管行業在產品、風險、投研、客戶、營銷、管理、服務等各個層面加速數字化轉型。 本期DTALK我們邀請到袋鼠雲金融行業解決方案專家 範雲浩 ...
  • 1. 前言 kafka作為數據中間鍵在數據服務解耦,大數據,日誌方面堪稱一把瑞士軍刀,備受青睞,作為提供了一套完整命令行的程式,日常進行調試過程中難免會用到一些指令,現總結18條最常用指令。 2. 常用指令 啟動消費者 bin/kafka-console-consumer.sh --bootstra ...
  • 上架基本需求資料 1、蘋果開發者賬號 註冊好的蘋果開發者賬號,個人的就可以了。繳納年費99美刀後登錄到蘋果開發者後臺即刻看到如下內容 簡單描述一下以上內容用於幹啥: 1.app Store Connect:用於蘋果上架,也就是咱們上架到app Store所需要操作的目錄 2.證書、標識符和描述文件: ...
  • 前言 寫作如說話,想說與說明白中間隔著溝壑! 下麵用 Notion AI 作詩來作為本文開頭吧。 想說與說明白(作者:Notion AI) 想說千言萬語,說明白卻難如登天。 言語之間,溝壑重重,思想與表達,有時天壤之別。 有時候,我們沉默不語, 缺乏表達能力,難以抒發內心的情感。 這時候,Notio ...
  • ​ 表格: <table> <tr> <th>表格1</th> </tr> <tr> <td>表格2</td> </tr> </table> 快捷鍵:table>tr*數量>td*數量 屬性名 屬性值 說明 align left、center、right border 1或“” 邊框 cellpad ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 vue3 於 2020 年 09 月 18 日正式發佈,2022 年 2 月 7 日 vue3 成為新的預設版本 距離 vue3 正式發佈已經過去兩年有餘, 成為預設版本也過去大半年了,以前還能說是對新技術、新特性的觀望,而現在面試都直問 ...
  • Web開發工具 從高層次來看,可以將客戶端工具放入以下三大類需要解決的問題中: 安全網路 — 在代碼開發期間有用的工具。 轉換 — 以某種方式轉換代碼的工具,例如將一種中間語言轉換為瀏覽器可以理解的 JavaScript。 開發後階段 — 編寫完代碼後有用的工具,如測試和部署工具。 終端命令 導航計 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...