URL統一資源定位符解析


URL:  

  url概述:

    URL(Uniform / Universal Resource Locator 的縮寫):統一資源定位符,是用於完整地描述 Internet 上網頁和其他資源的地址的一種標識方法。

  url的作用

    用來定位互聯網上的【任意】資源的【位置】。

  url的組成:
    https://www.baidu.com/s?wd=python&rsv_spt=1
    https://www.baidu.com/index.html
    協議:https/http
      netloc(網絡地址):ip:port
      ip主要用來定位電腦(網卡)。
      port主要用來定位應用。mysql(3306),mongo(27017)----相當於一個門戶。
      path:資源在服務器的相對路徑。---路由(router)

  url中的特殊符號:

    ?:get請求的參數在?后面
    &:get請求的多個參數用&連接
    #:錨點,定位到頁面中任意位置。

  url基本格式:

http://localhost:8080/index

http:協議
localhost:域名,也可以是IP地址
port:服務器的端口
path:訪問資源的路徑

基本格式:scheme://host[:port#]/path/…/[?query-string][#anchor]

  scheme:協議(例如:http, https, ftp)

  host:服務器的 IP 地址或者域名

  port:服務器的端口(如果是走協議默認端口,缺省端口 80) path:訪問資源的路徑

  query-string:參數,發送給 http 服務器的數據

  anchor:錨(跳轉到網頁的指定錨點位置) 

python中用來解析url的模塊 urllib

       from urllib import parse
            url = 'https://www.baidu.com:8888/index.html?username=222&password=123#abc'
            result = parse.urlparse(url)
            print(result)
            '''
            ParseResult(
                scheme='https',   # 協議
                netloc='www.baidu.com:8888',  # 域名
                path='/index.html',   # 路徑
                params='',   # 路徑參數
                query='username=222&password=123',  # 查詢參數 
                fragment='abc')  # 片段
            '''
            print(result.scheme)
            print(result.netloc)

 http工作過程:

  1.地址解析

  2.封裝HTTP請求數據包

  3.封裝成TCP包,建立TCP連接(TCP的三次握手)

  4.客戶機發送請求

  5.服務器響應

  6.服務器關閉TCP連接

HTTP常見請求方式:

客戶端HTTP請求: 

  URL 只是標識資源的位置,而 HTTP 是用來提交和獲取資源。客戶端發送一個 HTTP

  請求到服務器的請求消息,包括以下格式:

  請求行、請求頭部、空行、請求數據四個部分組成,下圖給出了請求報文的一般格式。

  

 

請求行:協議,url,請求方法。

請求頭:主要的作用就是來限定這個請求的詳細信息。
請求數據:post請求的數據是放到這里面的。

 

重要請求頭(針對於爬蟲而言)

user-agent:客戶端標識
cookie:請求的狀態信息,很重要
Referer:表示產生請求的網頁來源於哪里。
防盜鏈。
accept:允許傳入的文件類型。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3。
x-requested-with:ajax請求必須要封裝的頭
--------------------------
content-type:post請求的數據類型
content-length:post請求數據的長度

請求方法:

get/post/put(推送)/delete(刪除)/trace(診斷)/options(性能)/connect(連接,預留字段)。
get方法:get獲取--從服務器獲取資源--條件(請求參數)---請求參數是拼接到url里面的?后面--不安全(容易被別人獲取:用戶名和密碼)---大小受限。
post方法:post傳遞--向服務器傳遞數據--請求數據是放在實體里面。----安全---大小不受限

服務器響應:

(1)組成:
  狀態行:狀態碼
  消息報頭:
  空行
  響應正文
(2)響應頭
  Content-Type: text/html;charset=utf-8:響應的類型
(3)狀態碼(狀態碼)

100~199:表示服務器成功接收部分請求,要求客戶端繼續提交其余請求才能完成整個處理過程。
200~299:表示服務器成功接收請求並已完成整個處理過程。常用200(OK 請求成功)。    300~399:為完成請求,客戶需進一步細化請求。例如:請求的資源已經移動一個新地址、常用302(所請求的頁面已經臨時轉移至新的url)、307和304(使用緩存資源)。
400~499:客戶端的請求有錯誤,常用404(服務器無法找到被請求的頁面)、403(服 務器拒絕訪問,權限不夠---DDos)。
500~599:服務器端出現錯誤,常用500(請求未完成。服務器遇到不可預知的情況)。

當我們在客戶端輸入一個url,客戶端是如何請求加載出整個頁面的?

(1)客戶端解析url,封裝數據包,發送請求給服務器。
(2)服務器從請求中解析出客戶端想要內容,比如index.html,就把該頁面封裝成響應數據包,發送給客戶端。
(3)客戶端檢查該inde.html中是否有靜態資源需要繼續請求,比如js,css,圖片,如果有繼續請求獲取靜態資源。
(4)客戶端按照html的語法結合靜態資源將頁面完美的顯示出來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM