Introduction to Python Applications 2025 - Selenium === ###### tags: `Python` `Python and Its Application 2025` ## 網頁的構成 1. **HTML (HyperText Markup Language - 超文本標記語言):房子的結構** * **用途:** HTML 是網頁的骨架,負責定義網頁的內容和結構。它會告訴瀏覽器網頁上有哪些元素,例如標題、段落、圖片、連結、列表等等。 * **比喻:** 就像蓋房子時的鋼筋水泥、樑柱和牆壁,HTML 搭建起網頁的基本框架。它決定了「這裡是一個標題」、「那裡是一段文字」、「這是一張圖片」。 * **範例:** ```html <!DOCTYPE html> <html> <head> <title>我的網頁</title> </head> <body> <h1>歡迎來到我的網站</h1> <p>這是一個介紹 HTML、CSS 和 JavaScript 的段落。</p> <img src="image.jpg" alt="示意圖"> <a href="#">點擊這裡</a> </body> </html> ``` 2. **CSS (Cascading Style Sheets - 層疊樣式表):房子的裝潢和外觀** * **用途:** CSS 負責網頁的視覺呈現和排版。它用來控制 HTML 元素的樣式,例如顏色、字體、大小、間距、背景、位置等等。 * **比喻:** 如果 HTML 是房子的結構,那麼 CSS 就是油漆、壁紙、家具、燈飾和室內設計。它讓網頁看起來更美觀、更易於閱讀。 * **範例 (通常寫在 `<style>` 標籤內或獨立的 `.css` 檔案):** ```css body { font-family: Arial, sans-serif; /* 設定字體 */ background-color: #f0f0f0; /* 設定背景顏色 */ } h1 { color: navy; /* 設定標題顏色 */ text-align: center; /* 設定標題置中 */ } p { font-size: 16px; /* 設定段落文字大小 */ line-height: 1.6; /* 設定行高 */ } img { display: block; /* 讓圖片獨占一行 */ margin: 0 auto; /* 讓圖片水平置中 */ width: 50%; /* 設定圖片寬度 */ } ``` 3. **JavaScript (JS):房子的互動功能和動態效果** * **用途:** JavaScript 為網頁添加互動性和動態功能。它可以讓網頁對使用者的操作做出反應,例如點擊按鈕、提交表單、播放動畫、更新內容等等。 * **比喻:** JavaScript 就像房子裡的電器、門鈴、自動門、電燈開關等等。它讓網頁「活」起來,不再只是靜態的展示。 * **範例 (通常寫在 `<script>` 標籤內或獨立的 `.js` 檔案):** ```javascript // 假設 HTML 中有一個按鈕 <button id="myButton">點我</button> // 和一個段落 <p id="myParagraph"></p> let button = document.getElementById("myButton"); let paragraph = document.getElementById("myParagraph"); button.addEventListener("click", function() { paragraph.textContent = "按鈕被點擊了!"; // 點擊按鈕後改變段落文字 }); ``` **它們如何協同工作?** 想像一下瀏覽器載入一個網頁的過程: 1. **瀏覽器首先讀取 HTML 檔案。** 這就像建築工人先看設計藍圖,了解房子的基本結構,知道哪裡是客廳、哪裡是臥室。 2. **接著,瀏覽器根據 HTML 結構,套用 CSS 樣式。** 這就像裝潢工人開始粉刷牆壁、鋪設地板、擺放家具,讓房子有了美觀的外觀。 3. **最後,瀏覽器執行 JavaScript 程式碼。** 這就像接通電源,讓房子裡的電器和互動裝置開始運作。使用者可以開燈、按門鈴,網頁也可以根據使用者的操作產生變化。 **總結來說:** * **HTML** 提供**內容**和**結構**。 * **CSS** 提供**樣式**和**外觀**。 * **JavaScript** 提供**互動性**和**功能**。 這三者相輔相成,缺一不可,共同構成了我們每天在網路上看到的豐富多彩、功能強大的網頁。學習網頁開發,通常也是從這三門技術開始入手。 ## HTML **HTML(HyperText Markup Language)** 是用來建立網頁的**標記語言**,用來描述**網頁的結構與內容**,例如標題、段落、圖片、表單等等。 * HTML 不是程式語言,而是一種**結構標記語言** * 瀏覽器負責「解譯」HTML 並顯示給使用者 ## 為何需要 Selenium `requests` 可以取得網頁原始碼,即 html 的部分,也可以利用 BeautifulSoup 等工具進行分析,但是 `requests` 本體並沒有提供 JavaScript 執行的環境,因此能夠直接使用真正的瀏覽器來開啟網頁的 Selenium,才能夠做到執行 JavaScript 並在正確顯示的網頁上取得資料。 ## HTML5 基礎結構 HTML5 是最新版本,支援更多語義化標籤與多媒體功能。 ### 一個完整的 HTML5 範例: ```html <!DOCTYPE html> <html lang="zh-Hant"> <head> <meta charset="UTF-8"> <title>我的第一個網頁</title> </head> <body> <h1>你好,世界!</h1> <p>這是一個用 HTML5 撰寫的網頁。</p> </body> </html> ``` ### 📌 各部分說明: | 區塊 | 說明 | | ------------------------ | -------------------------- | | `<!DOCTYPE html>` | 宣告這是 HTML5 文件 | | `<html lang="zh-Hant">` | 整個 HTML 文件開始,`lang` 屬性定義語言 | | `<head>` | 頭部區塊(放網頁資訊、CSS、Meta、標題等) | | `<meta charset="UTF-8">` | 定義編碼,支援繁體中文 | | `<title>` | 網頁標題(會顯示在瀏覽器分頁) | | `<body>` | 內容區塊,顯示在網頁畫面上的部分 | ### 語法相關名詞 - Tag: 通常有**開始與結束** `<p>內容</p>`,但部分標籤是**單標籤(自閉合)**:如 `<img />`、`<br />`。 - Type: `<p>這是一個用 HTML5 撰寫的網頁。</p>` 的 `p` 就是 Type。 - Attribute: `<html lang="zh-Hant">` 中的 `lang` 就是 Attribute。 - Text: `<p>這是一個用 HTML5 撰寫的網頁。</p>` 中的「這是一個用 HTML5 撰寫的網頁。」就是 Text。 ## 常用 HTML 標籤與範例 ### 標題與段落 ```html <h1>主標題</h1> <h2>副標題</h2> <p>這是一段文字。</p> ``` * `<h1>`\~`<h6>`:標題,數字越小越重要 * `<p>`:段落 ### 連結與圖片 ```html <a href="https://www.google.com">前往 Google</a> <img src="https://via.placeholder.com/150" alt="範例圖片"> ``` * `<a href="URL">文字</a>`:超連結 * `<img src="圖片網址" alt="替代文字">`:圖片(`alt` 是無法顯示時的替代描述) ### 清單 ```html <ul> <li>無序項目 1</li> <li>無序項目 2</li> </ul> <ol> <li>有序項目 1</li> <li>有序項目 2</li> </ol> ``` * `<ul>`:無序清單(圓點) * `<ol>`:有序清單(數字) * `<li>`:清單項目 ### 表格 ```html <table border="1"> <tr> <th>姓名</th> <th>年齡</th> </tr> <tr> <td>小明</td> <td>18</td> </tr> </table> ``` * `<table>`:表格 * `<tr>`:列 * `<td>`:儲存格(資料格) * `<th>`:標題格(加粗置中) ### 表單元件(輸入) ```html <form> 姓名:<input type="text" name="name"><br> 信箱:<input type="email" name="email"><br> <button type="submit">送出</button> </form> ``` * `<form>`:表單區塊 * `<input>`:輸入欄位(`type` 決定型態) * `<button>`:按鈕 ## CSS 基礎 * CSS 是什麼? * Cascading Style Sheets * 設計、美化、排版 HTML 元素的工具 * CSS 導入方式 * inline style: `<p style="color:red">`(不推薦) * internal: `<style>` 安裝在 `<head>` * external: 外部 CSS 檔案 ### 常用 CSS 選擇器 選擇器(Selector)用來「選取」HTML 中的元素,然後套用樣式。以下是常見的類型: | 選擇器 | 說明 | 範例 | | -------------- | ------------------- | ------------------------------------ | | 標籤選擇器 | 選取所有該 HTML 標籤元素 | `h1 { color: red; }` | | 類別選擇器 `.class` | 選取 class 屬性為指定名稱的元素 | `.title { font-size: 24px; }` | | ID 選擇器 `#id` | 選取具有特定 id 的元素 | `#header { background: gray; }` | | 群組選擇器 | 一次選取多個元素 | `h1, h2, p { margin-bottom: 10px; }` | | 後代選擇器 | 選取某元素內的某種子元素 | `ul li { list-style: square; }` | _ 還有更多選擇器,但我們先跳過。 ### 基礎樣式屬性 * `color`, `background-color` * `font-family`, `font-size` * `padding`, `margin`, `border` * `text-align`, `display`, `flex` ## 練習範例檔案 檔案組合: ``` lesson-demo/ ├── index.html ├── style.css └── script.js ``` **index.html** ```html <!DOCTYPE html> <html lang="zh-Hant"> <head> <meta charset="UTF-8"> <title>我的個人網頁</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>我是學習者</h1> <p>我喜歡網頁開發。</p> <img src="https://via.placeholder.com/150" alt="avatar"> <p><a href="https://www.google.com">Google 網址</a></p> <button id="countBtn">點我!</button> <p>點擊次數:<span id="counter">0</span></p> <script src="script.js"></script> </body> </html> ``` **style.css** ```css body { font-family: Arial, sans-serif; background-color: #f5f5f5; padding: 20px; text-align: center; } h1 { color: #2c3e50; } img { border-radius: 50%; margin: 10px 0; } button { padding: 10px 20px; font-size: 16px; cursor: pointer; background-color: #3498db; color: white; border: none; border-radius: 5px; } ``` **script.js** ```javascript let count = 0; document.querySelector('#countBtn').addEventListener('click', () => { count++; document.querySelector('#counter').textContent = count; }); ``` ## [Selenium with Python](https://selenium-python.readthedocs.io/)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.