文章目录

  • 一:URL举例
  • 二:URL通用格式
    • URL的语法:
    • 通用格式:
    • URL的分类:
      • 绝对URL:
      • 相对URL:
  • 三:URL特殊字符

一:URL举例

就以下面这个URL为例,介绍下普通URL的各部分组成

http://www.aspxfans.com:8080/news/index.asp?boardID=5&ID=24618&page=1#name

从上面的URL可以看出,一个完整的URL包括以下几部分:

  1. 协议部分:该URL的协议部分为“http:”,这代表网页使用的是HTTP协议。在Internet中可以使用多种协议,如HTTP,FTP等等本例中使用的是HTTP协议。在"HTTP"后面的“//”为分隔符

  2. 域名部分:该URL的域名部分为“www.aspxfans.com”。一个URL中,也可以使用IP地址作为域名使用

  3. 端口部分:跟在域名后面的是端口,域名和端口之间使用“:”作为分隔符。端口不是一个URL必须的部分,如果省略端口部分,将采用默认端口

  4. 虚拟目录部分:从域名后的第一个“/”开始到最后一个“/”为止,是虚拟目录部分。虚拟目录也不是一个URL必须的部分。本例中的虚拟目录是“/news/”

  5. 文件名部分:从域名后的最后一个“/”开始到“?”为止,是文件名部分,如果没有“?”,则是从域名后的最后一个“/”开始到“#”为止,是文件部分,如果没有“?”和“#”,那么从域名后的最后一个“/”开始到结束,都是文件名部分。本例中的文件名是“index.asp”。文件名部分也不是一个URL必须的部分,如果省略该部分,则使用默认的文件名

  6. 锚部分:从“#”开始到最后,都是锚部分。本例中的锚部分是“name”。锚部分也不是一个URL必须的部分

  7. 参数部分:从“?”开始到“#”为止之间的部分为参数部分,又称搜索部分、查询部分。本例中的参数部分为“boardID=5&ID=24618&page=1”。参数可以允许有多个参数,参数与参数之间用“&”作为分隔符。

二:URL通用格式

URL的语法:

大多数URL语法都建立在9个部分构成的通用格式上,而其中最重要的是方案(scheme)、主机(host)和路径(path)

通用格式:

方案://用户名:密码@主机名:端口/服务器上资源的路径;参数?查询#片段

  1. 方案:指访问服务器以获取资源时要使用哪种协议。比如,http、https和FTP等

  2. 主机和端口:指资源宿主服务器的主机名或IP地址。端口是指资源宿主服务器正在监听的端口,很多HTTP的默认端口号是80。比如,130.32.12.34:800,这里的IP地址是主机名,端口是800

  3. 用户名和密码:很多服务器都要求输入用户名和密码才会允许用户访问数据,如FTP服务器。

    例子:joe是用户名、joepasswd是密码

    ftp://joe:joepasswd@ftp.prep.edu/pub/name

  4. 路径:路径说明了资源位于服务器的什么地方。

    例子:/cans/index.html就是URL中的路径

    http://www.hda.com/cans/index.html

  5. 参数:为了向应用程序提供它们所需要的输入参数,以便正确地与服务器进行交互,URL中有个参数组件。由字符“;”将其与URL的其余部分分隔开来。

    例子:;type=7;nam=true就是两个参数。

    ftp://prep.mit.edu/pub;type=7;nam=true

  6. 查询:很多资源,比如数据库服务、搜索引擎,都可以通过提问题或进行查询来缩小请求资源的范围。由字符“?”将其与URL的其余部分分隔开来。

    例子:查询组件有两个名/值对:name=csh和age=24

    http://www.cheng.cn/si.html?name=csh&age=24

  7. 片段:#代表网页中的一个位置,其右面的字符就是该位置的标识符(一般情况下,锚链接会用到)

    例子:下面的URL中,代表网页si.index的print位置,浏览器读取这个URL后,会自动将print位置滚动至可视区域。

    http://www.cheng.cn/si.html#print

URL的分类:

URL可以分为绝对URL和相对URL

绝对URL:

绝对URL中包含了访问资源所需的全部信息。

案例:<a href=’http://cheng.com/si.html></a>

相对URL:

相对URL包含的只是访问资源所需的部分信息。而要想得到访问资源的全部信息的话,就要和另一个被称为基础(base)的URL结合进行解析

案例:<script src="lib/sea.js"></script>

相对URL中的基础URL:转换相对URL的第一步就是找到基础URL

  1. 在资源中显式地指定基础URL。比如,HTML文档中可能会包含一个定义了基础URL的HTML标签

  2. 封装资源的基础URL。在HTML中,基础URL可以从它们所属资源的基础URL中推导出来

三:URL特殊字符

有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。

下表中列出了一些URL特殊符号及编码
:替换为%3A 

例:要传递字符串“this%is#te=st&o k?+/”作为参数t传给te.asp,则URL可以是:
te.asp?t=this%25is%23te%3Dst%26o%20k%3F%2B%2F 或者
te.asp?t=this%25is%23te%3Dst%26o+k%3F%2B%2F (空格可以用%20或+代替)

java中URL 的编码和解码函数
java.net.URLEncoder.encode(String s)和java.net.URLDecoder.decode(String s);

在javascript 中URL 的编码和解码函数
escape(String s)和unescape(String s) ;

Java
中URL 的编码和解码函数

java
.NET
.URLEncoder.encode(String s)和java
.Net
.URLDecoder.decode(String s);


JavaScript
中URL 的编码和解码函数

escape(String s)和unescape(String s) ;

点的转义:. ==> u002E

美元符号的转义:$ ==> u0024

乘方符号的转义:^ ==> u005E

左大括号的转义:{ ==> u007B

左方括号的转义:[ ==> u005B

左圆括号的转义:( ==> u0028

竖线的转义:| ==> u007C

右圆括号的转义:) ==> u0029

星号的转义:* ==> u002A

加号的转义:+ ==> u002B

问号的转义:? ==> u003F

反斜杠的转义: ==> u005C

举例:

我们需要模拟的地址为:

https://login.weixin.qq.com/jslogin?appid=wx782c26e4c19acffb&redirect_uri=https%3A%2F%2Fwx.qq.com%2Fcgi-bin%2Fmmwebwx-bin%2Fwebwxnewloginpage&fun=new&lang=en_US&=1453725386008

,所以我们模拟的代码如下:

#coding=utf8
import time, requests
session = requests.Session()
url = 'https://login.weixin.qq.com/jslogin'
params = {'appid': 'wx782c26e4c19acffb','redirect_uri': 'https://wx.qq.com/cgi-bin/mmwebwx-bin/webwxnewloginpage','fun': 'new','lang': 'en_US','_': int(time.time()),}
r = session.get(url, params = params)
print('Content: %s'%r.text)

前端基础——URL详解相关推荐

  1. ES6 — Promise基础用法详解(resolve、reject、then、catch,all,)

    ES6 - Promise基础用法详解 Promise 是一个构造函数,它自身拥有all.reject.resolve这几个眼熟的方法, 原型上有then.catch等同样熟悉的方法. 所以,在开始一 ...

  2. vue-cli脚手架配置基础文件详解/新手入门必看

    vue-cli 脚手架中webpack 配置基础文件详解 需要Word版本 的小伙伴可以发我邮件2445478193@qq.com 一.前言 vue-cli是构建vue单页应用的脚手架,输入一串指定的 ...

  3. python命名空间和闭包_Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】...

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的 ...

  4. mysql8.0日期类型_mysql8.0.19基础数据类型详解

    mysql基础数据类型 mysql常用数据类型概览 ![1036857-20170801181433755-146301178](D:\笔记\mysql\复习\1036857-201708011814 ...

  5. DD每周前端七题详解-第五期

    DD每周前端七题详解-第五期 系列介绍 你盼世界,我盼望你无bug.Hello 大家好!我是霖呆呆! 呆呆每周都会分享七道前端题给大家,系列名称就是「DD每周七题」. 系列的形式主要是:3道JavaS ...

  6. layUI前端框架使用详解_layUI前端框架视频教程

    百度云网盘下载 ayUI前端框架使用详解_layUI前端框架视频教程 课程目录: 1前言 2为什么要用layUI框架 3layer组件的引用方法 4layer组件的使用方法详解 5用layer组件快速 ...

  7. layUI前端框架使用详解_layUI前端框架视频教程完整版

    layUI前端框架使用详解_layUI前端框架视频教程 课程目录: 1前言 2为什么要用layUI框架 3layer组件的引用方法 4layer组件的使用方法详解 5用layer组件快速开发一个表单验 ...

  8. 前端路由模式详解(hash和history)

    前端路由模式详解(hash和history) 前端路由有两种模式:hash 模式和 history 模式,接下来分析这两种模式的实现方式和优缺点. hash 模式 hash 模式是一种把前端路由的路径 ...

  9. java写mapstate算子,vuex state及mapState的基础用法详解

    vuex state及mapState的基础用法详解 2019-01-07 编程之家收集整理的这篇文章主要介绍了vuex state及mapState的基础用法详解,编程之家小编觉得挺不错的,现在分享 ...

最新文章

  1. RM格式转换成VCD
  2. boost::contract模块日历的测试程序
  3. 【开源项目】基于Directx屏幕录制
  4. oracle idl_ub1$,system表空间急剧增大原因分析
  5. 矩阵分析与应用课后答案——张贤达版本
  6. 拿什么拯救我,我的爱人
  7. jq写的项目如何部署到静态服务器_如何在阿里云服务器上部署一个Web项目
  8. Entity Framework Codefirst的配置步骤
  9. 光谱数据处理及定量分析
  10. 不会真有人觉得在广州、深圳这样的城市月薪过万很容易吧
  11. qq空间java下载图片_使用JAVA爬取网页图片
  12. 张冬:OpenPOWER CAPI为什么这么快?(二)
  13. WPA-PSK无线网络破解原理与过程
  14. Maven原始setting.xml文件备份
  15. MSCOCO检测数据集类别中文名
  16. 万马股份旗下万马爱充遭通报下架:违规收集个人信息,未及时整改
  17. 【C++PTA】7-1 运算符重载 分数类 约分
  18. python微信公众号秒杀代码_如何在微信公众号编辑Python代码?
  19. Ubuntu 根目录结构
  20. 全面 一文理解微服务高可用的常用手段

热门文章

  1. 打印机主流的指令类型(ESC命令集+CPCL命令集+TSPL命令集)
  2. python编写淘宝秒杀脚本
  3. 1034:计算三角形面积
  4. 索引一般加在什么字段上_在价值上亿的豪华游轮做服务员,是什么体验?网友:也就一般般吧...
  5. Android iOS Mac QQ邮箱 日历同步
  6. 【云原生Docker系列第三篇】Docker网络模式(在失去的所有人里,我最怀念自己 )
  7. 小游戏算年龄(Java)
  8. leetcode 455 分发饼干(c++和python) 贪心算法
  9. 专业系统维护:CleanMyMac X for mac
  10. 看雪2W课-Frida逆向与利用自动化 Frida开发和调试环境搭建 课时1