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的语法结合静态资源将页面完美的显示出来。