遵循的htt協(xié)議
HTTP/1.1 200 OK\r\n\r\n
在瀏覽器端輸入 URl:127.0.0.1:9090進行訪問
瀏覽器發(fā)請求 --> HTTP協(xié)議 --> 服務端接收請求 --> 服務端返回響應 --> 服務端把HTML文件內(nèi)容發(fā)給瀏覽器 --> 瀏覽器渲染頁面
import socket
sk = socket.socket()
sk.bind(('127.0.0.1',9090))
sk.listen()
while 1:
conn,addr = sk.accept()
ret = conn.recv(1024)
print(ret)
# 或conn.send(b'HTTP/1.1 200 OK\r\ncontent-type: text/html; charset=utf-8\r\n\r\n')
conn.send(b"HTTP/1.1 200 OK\r\n\r\n ")
with open(r'C:\Users\Administrator\PycharmProjects\Snack\Python\PY練習\練習.py','rb') as f:
conn.send(f.read())
conn.close()
sk.close()
URL:統(tǒng)一資源定位符
URL地址由4部分組成
第1部分:為協(xié)議:http://、ftp://等
第2部分:為站點地址:可以是域名或IP地址
第3部分:為頁面在站點中的目錄:stu
第4部分:為頁面名稱,例如 index.html
各部分之間用“/”符號隔開。
HTML
- 超文本標記語言
- 瀏覽器可識別的規(guī)則,標記語言(兼容性問題)
- 網(wǎng)頁文件的擴展名:.html或.htm
- HTML是一種標記語言(markup language),它不是一種編程語言。
1. CS --> BS架構(gòu)
2. Web的原理
瀏覽器地址欄輸入URL
--> 瀏覽器往服務端發(fā)消息
--> 服務端接收消息
--> 服務端回消息(從文件中讀取數(shù)據(jù))
--> 瀏覽器收到消息(按照一個約定好的規(guī)則展示出來)
HTML文檔結(jié)構(gòu):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>css樣式優(yōu)先級</title>
</head>
<body>
</body>
</html>
1.<!DOCTYPE html>聲明為HTML5文檔
2.<html>、</html>是文檔的開始標記和結(jié)束的標記。是HTML頁面的根元素
3.<head>、</head>定義了HTML文檔的開頭部分。包含了文檔的元(meta)數(shù)據(jù)。
4.<title>、</title>定義了網(wǎng)頁標題,在瀏覽器標題欄顯示。
5.<body>、</body>之間的文本是可見的網(wǎng)頁主體內(nèi)容。
6.中文網(wǎng)頁需要使用 <meta charset="utf-8"> 聲明編碼,否則會出現(xiàn)亂碼。有些瀏覽器會設(shè)置 GBK 為默認編碼,則你需要設(shè)置為 <meta charset="gbk">。
html標簽格式
1.尖括號包圍的關(guān)鍵字
2.HTML標簽通常是成對出現(xiàn)的,比如:<div>和</div>,第一個標簽是開始,第二個標簽是結(jié)束。
3.部分標簽是單獨呈現(xiàn)的,比如:<br/>、<hr/>、<img src="1.jpg" />等。
4.標簽里面可以有若干屬性,也可以不帶屬性。
標簽的語法:
<標簽名 屬性1=“屬性值1” 屬性2=“屬性值2”……>內(nèi)容部分</標簽名>
<標簽名 屬性1=“屬性值1” 屬性2=“屬性值2”…… />
幾個很重要的屬性:
id:定義標簽的唯一ID,HTML文檔樹中唯一
class:為html元素定義一個或多個類名(classname)(CSS樣式類名)
style:規(guī)定元素的行內(nèi)樣式(CSS樣式)
HTML注釋:
<!--注釋內(nèi)容-->
<!DOCTYPE> 標簽:
<!DOCTYPE> 聲明不是 HTML 標簽;它是指示 web 瀏覽器關(guān)于頁面使用哪個 HTML 版本進行編寫的指令。
head內(nèi)常用標簽:
<title></title> 定義網(wǎng)頁標題
<style></style> 定義內(nèi)部樣式表
<script></script> 定義JS代碼或引入外部JS文件
<link/> 引入外部樣式表文件
<meta/> 定義網(wǎng)頁原信息
Meta標簽介紹:
meta標簽的組成:meta標簽共有兩個屬性,它們分別是http-equiv屬性和name 屬性,不同的屬性又有不同的參數(shù)值,這些不同的參數(shù)值就實現(xiàn)了不同的網(wǎng)頁功能。
1.http-equiv屬性:相當于http的文件頭作用,它可以向瀏覽器傳回一些有用的信息,以幫助正確地顯示網(wǎng)頁內(nèi)容,與之對應的屬性值為content,content中的內(nèi)容其實就是各個參數(shù)的變量值。
<!--2秒后跳轉(zhuǎn)到對應的網(wǎng)址,注意引號-->
<meta http-equiv="refresh" content="2;URL=https://www.oldboyedu.com">
<!--指定文檔的編碼類型-->
<meta http-equiv="content-Type" charset=UTF8">
<!--告訴IE以最高級模式渲染文檔-->
<meta http-equiv="x-ua-compatible" content="IE=edge">
2.name屬性: 主要用于描述網(wǎng)頁,與之對應的屬性值為content,content中的內(nèi)容主要是便于搜索引擎機器人查找信息和分類信息用的。
<meta name="keywords" content="meta總結(jié),html meta,meta屬性,meta跳轉(zhuǎn)">
<meta name="description" content="老男孩教育Python學院">
<meta>元素可提供有關(guān)頁面的原信息(mata-information),針對搜索引擎和更新頻度的描述和關(guān)鍵詞。
<meta>標簽位于文檔的頭部,不包含任何內(nèi)容。
<meta>提供的信息是用戶不可見的。
<head>
<meta lang="zh-CN">
<title>騎士計劃!改變世界,從西麗開始!</title>
<!--指定文檔的編碼類型-->
<meta http-equiv="content-Type" charset="UTF8">
<!--告訴IE以最高級模式渲染文檔-->
<meta http-equiv="x-ua-compatible" content="IE=edge">
<!--刷新2秒后跳轉(zhuǎn)到指定網(wǎng)站,沒有URl就是兩秒刷新一次-->
<meta http-equiv="refresh" content="2;URL=https://www.oldboyedu.com">
<!--搜素引擎優(yōu)化-->
<meta name="keywords" content="meta總結(jié),html meta,meta屬性,meta跳轉(zhuǎn)"> # 關(guān)鍵字搜素
<meta name="description" content="老男孩教育Python學院"> # 描述網(wǎng)站信息
</head>
body內(nèi)常用標簽:
id:html文檔中唯一
a:鏈接可點擊href="URL"
<body>
<!-- 這就是注釋 -->
<h1 s1="hao" style="color: red">Hello world!</h1>
<a id="a1" >路飛學城</a>
<a id="a2" >jd.com</a>
<!--<a >sogo.com</a>-->
</body>
常用標簽
<b>加粗</b>
<i>斜體</i>
<u>下劃線</u>
<s>刪除</s>
<p>段落標簽</p>
<h1>標題1</h1>
<h2>標題2</h2>
<h3>標題3</h3>
<h4>標題4</h4>
<h5>標題5</h5>
<h6>標題6</h6>
換行--><br>
水平線--><hr>
特殊字符
空格
HTML中把連續(xù)的空格和換行都解析成一個空格,不存在縮進的問題
> >
< <
& &
¥ ¥
版權(quán) ©
注冊 ®
div標簽和span標簽
div: 獨占一行,塊級標簽
塊級標簽:
自己獨占一行!
p
h1~h6
hr
div
span:不換行,行內(nèi)標簽
行內(nèi)標簽(內(nèi)聯(lián)標簽):
默認都在一行顯示!
b、i、u、s
span
1.div標簽用來定義一個塊級元素,并無實際的意義。主要通過CSS樣式為其賦予不同的表現(xiàn)。
2.span標簽用來定義內(nèi)聯(lián)(行內(nèi))元素,并無實際的意義。主要通過CSS樣式為其賦予不同的表現(xiàn)。
注意:
關(guān)于標簽嵌套:通常塊級元素可以包含內(nèi)聯(lián)元素或某些塊級元素,但內(nèi)聯(lián)元素不能包含塊級元素,它只能包含其它內(nèi)聯(lián)元素。
p標簽不能包含塊級標簽,p標簽也不能包含p標簽。
標簽支持嵌套
1. 塊級標簽可以包含內(nèi)聯(lián)標簽
2. p標簽不能包含p標簽和div標簽
img標簽
<img src="圖片的路徑" alt="圖片未加載成功時的提示" title="鼠標懸浮時提示信息" width="寬" height="高(寬高兩個屬性只用一個會自動等比縮放)">
a標簽:超鏈接標簽
從一個網(wǎng)頁指向一個目標的連接關(guān)系,這個目標可以是另一個網(wǎng)頁,也可以是相同網(wǎng)頁上的不同位置,還可以是一個圖片,一個電子郵件地址,一個文件,甚至是一個應用程序。
<a target="_blank" >點我</a>
href屬性指定目標網(wǎng)頁地址。該地址可以有幾種類型:
1.絕對URL - 指向另一個站點(比如 href="http://www.jd.com)
<a target="_blank" >點我</a>
2.相對URL - 指當前站點中確切的路徑(href="index.htm")
3.錨URL - 指向頁面中的錨(href="#top")
<a href="#p1">點我</a>
<div style="height: 1000px"></div>
<p id="p1">大海啊,全是水。</p>
<div style="height: 1000px"></div>
target:
_blank表示在新標簽頁中打開目標網(wǎng)頁
_self表示在當前標簽頁中打開目標網(wǎng)頁
列表
1.無序列表
type屬性:
disc(實心圓點,默認值)
circle(空心圓圈)
square(實心方塊)
none(無樣式)
代碼
<ul type="disc">
<li>第一項</li>
<li>第二項</li>
</ul>
2.有序列表
type屬性:
1 數(shù)字列表,默認值
A 大寫字母
a 小寫字母
Ⅰ大寫羅馬
ⅰ小寫羅馬
start:從哪個位置開始,默認從第一個
代碼
<ol type="1" start="2">
<li>第一項</li>
<li>第二項</li>
</ol>
3.標題列表
dt:標題
dd:內(nèi)容-縮進
<dl>
<dt>標題1</dt>
<dd>內(nèi)容1</dd>
<dt>標題2</dt>
<dd>內(nèi)容1</dd>
<dd>內(nèi)容2</dd>
</dl>
表格
表格最重要的目的是顯示表格類數(shù)據(jù)。表格類數(shù)據(jù)是指最適合組織為表格格式(即按行和列組織)的數(shù)據(jù)。
屬性:
border: 表格邊框.
cellpadding: 內(nèi)邊距
cellspacing: 外邊距.
width: 像素 百分比.(最好通過css來設(shè)置長寬)
rowspan: 單元格豎跨多少行
colspan: 單元格橫跨多少列(即合并單元格)
代碼
<body>
<table border="1" cellpadding="10" cellspacing="5">
<thead>
<tr>
<th>序號</th>
<th>姓名</th>
<th>愛好</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td colspan="2">金老板</td>
</tr>
<tr>
<td>2</td>
<td>景女神</td>
<td rowspan="2">喝茶</td>
</tr>
<tr>
<td>3</td>
<td>娜扎</td>
</tr>
</tbody>
</table>
</body>
form標簽
1. 展示給用戶看的標簽
2. 獲取用戶輸入的標簽
form標簽(表單標簽)
3.表單還可以包含textarea、select、fieldset和 label標簽。
表單屬性
accept-charset 規(guī)定在被提交表單中使用的字符集(默認:頁面字符集)。
action 規(guī)定向何處提交表單的地址(URL)(提交頁面)。
autocomplete 規(guī)定瀏覽器應該自動完成表單(默認:開啟)。
enctype 規(guī)定被提交數(shù)據(jù)的編碼(默認:url-encoded)。
method 規(guī)定在提交表單時所用的 HTTP 方法(默認:GET)。
name 規(guī)定識別表單的名稱(對于 DOM 使用:document.forms.name)。
novalidate 規(guī)定瀏覽器不驗證表單。
target 規(guī)定 action 屬性中地址的目標(默認:_self)。
input
1. 根據(jù)type類型劃分
1. text
2. password
3. email
4. date
5. radio --> 單選
6. checkbox --> 多選
7. button --> 普通按鈕,多用于使用JS代碼綁定事件
8. submit --> 提交
9. reset --> 重置
10. file --> 上傳文件
屬性說明:
name:表單提交時的“鍵”,注意和id的區(qū)別
value:表單提交時對應項的值
type="button", "reset", "submit"時,為按鈕上顯示的文本年內(nèi)容
type="text","password","hidden"時,為輸入框的初始值
type="checkbox", "radio", "file",為輸入相關(guān)聯(lián)的值
checked:radio和checkbox默認被選中的項
readonly:text和password設(shè)置只讀
disabled:所有input均適用
select標簽
1. select標簽內(nèi)部包含的是option,需要配置value屬性
默認選中:selected="selected"
2. 多選
multiple
屬性說明:
multiple:布爾屬性,設(shè)置后為多選,否則默認單選
disabled:禁用
selected:默認選中該項
value:定義提交時的選項值
代碼
<form action="" method="post">
<select name="city" id="city">
<option value="1">北京</option>
<option selected="selected" value="2">上海</option>
<option value="3">廣州</option>
<option value="4">深圳</option>
</select>
</form>
label標簽
定義:<label> 標簽為 input 元素定義標注(標記)。
1.label 元素不會向用戶呈現(xiàn)任何特殊效果。
2.<label> 標簽的 for 屬性值應當與相關(guān)元素的 id 屬性值相同
代碼
<form action="">
<label for="username">用戶名</label>
<input type="text" id="username" name="username">
</form>
textarea多行文本
屬性說明:
name:名稱
rows:行數(shù)
cols:列數(shù)
disabled:禁用
代碼
<textarea name="memo" id="memo" cols="30" rows="10">
默認內(nèi)容
</textarea>
總代碼:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:8080" method="post" enctype="multipart/form-data">
<p>
<label for="i1">用戶名:</label>
<input id="i1" type="text" name="username">
</p>
<p>
<label>密碼:
<input type="password" name="pwd">
</label>
</p>
<p>
郵箱:
<input disabled type="email" name="email">
</p>
<p>出生日期:
<input type="date" name="birthday">
</p>
<p>
頭像:
<input type="file" name="avatar">
</p>
<p>
隱藏的輸入框:
<input type="hidden">
</p>
<p>性別:
<input type="radio" name="gender" value="male" checked>男
<input type="radio" name="gender" value="female">女
</p>
<p>
愛好:
<input type="checkbox" name="hobby" value="basketball">籃球
<input type="checkbox" name="hobby" value="football">足球
<input type="checkbox" name="hobby" value="doublecolorball">雙色球
</p>
<label for="s1">城市</label>
<select id="s1" name="city1">
<option value="010">北京</option>
<option value="021">上海</option>
<option value="020">廣州</option>
<option value="0755" selected="selected">深圳</option>
</select>
<select name="city2" multiple="multiple">
<option value="010">北京</option>
<option value="021">上海</option>
<option value="020">廣州</option>
<option value="0755" selected="selected">深圳</option>
</select>
<p>
個人簡介:
<textarea name="info" cols="60" rows="40">
</textarea>
</p>
<input type="button" value="按鈕">
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
{"name屬性的值": 用戶填寫的內(nèi)容}
</body>
</html>
注意事項:
1. 所有放在form標簽中獲取用戶輸入的標簽,必須要有name屬性
2. form標簽有action屬性和method屬性
1. action:控制往哪里提交數(shù)據(jù)
2. method:控制用什么方式提交
3. 上傳文件需要額外配置enctype="multipart/form-data"
3. form要提交數(shù)據(jù)必須要有submit按鈕