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