python实现切割url得到域名、协议、主机名等各个字段的例子


Posted in Python onJuly 25, 2019

有一个需求就是需要对url进行进一步的划分得到详细的各个字段信息,下面是简单的实现:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''
__Author__:沂水寒城
功能: 对URL进行分割,基于urlparse, publicsuffix, urllib编写
'''
from urlparse import urlparse
import codecs
from publicsuffix import PublicSuffixList
from urllib import splitport
import re
 
 
def domain_split(server_domain):
  '''
  server_domain为网站所用服务名+域名
  分割域名, 得到前缀(服务名)、主机域名、后缀(顶级域名)
    输入www.baidu.com,输出'www', 'baidu', 'com'
    输入172.31.137.240,输出'', '172.31.137.240', ''
  '''
  PSL_FILE = codecs.open('public_suffix_list.dat', encoding='utf8')
  psl = PublicSuffixList(PSL_FILE)
  domain = psl.get_public_suffix(server_domain)
  # 取域名的第一个字段,即第一个'.'之前的为主机域名, 后面为顶级域名,前面为所使用的服务
  if '.' in domain:
    server = server_domain[:-len(domain)]
    host = domain[:domain.index('.')]
    top = domain[domain.index('.'):]
    hostname = server + host + top
  else: # 说明提取域名失败,例如172.31.137.240等IP形式,此时全部当作主机域名
    server = ''
    host = server_domain
    top = ''
    hostname = server_domain
  return server, host, top, hostname
 
 
def url_split_new(url):
  '''
  url分割
  '''
  if not url.startswith('http'): # 补全协议,否则urlparse出错
    url = 'http://' + url
  parts = urlparse(url)
  # 服务+域名'www.baidu.api.com.cn'切分
  server, host, top, hostname = domain_split(parts.netloc)
  host, port = splitport(host)
  if port == None: port = ''
  return {'protocol': parts.scheme, 'hostname': hostname, 'path': parts.path}
 
 
if __name__ == '__main__':
  print url_split_new('http://www.baidu.com/')
  print url_split('http://www.baidu.com/')

以上这篇python实现切割url得到域名、协议、主机名等各个字段的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详细解析Python中的变量的数据类型
May 13 Python
python简单猜数游戏实例
Jul 09 Python
Python+selenium 获取一组元素属性值的实例
Jun 22 Python
Python爬虫爬取新浪微博内容示例【基于代理IP】
Aug 03 Python
python组合无重复三位数的实例
Nov 13 Python
PyQt5 QListWidget选择多项并返回的实例
Jun 17 Python
Python Pandas中根据列的值选取多行数据
Jul 08 Python
python误差棒图errorbar()函数实例解析
Feb 11 Python
Python基于requests实现模拟上传文件
Apr 21 Python
Django QuerySet查询集原理及代码实例
Jun 13 Python
python实现简单的tcp 文件下载
Sep 16 Python
python tqdm实现进度条的示例代码
Nov 10 Python
python按修改时间顺序排列文件的实例代码
Jul 25 #Python
在python中用url_for构造URL的方法
Jul 25 #Python
对python中url参数编码与解码的实例详解
Jul 25 #Python
使用WingPro 7 设置Python路径的方法
Jul 24 #Python
python selenium 查找隐藏元素 自动播放视频功能
Jul 24 #Python
简单了解Django应用app及分布式路由
Jul 24 #Python
django的ORM操作 删除和编辑实现详解
Jul 24 #Python
You might like
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
地摊中国 - 珍藏老照片
2020/08/18 杂记
在php中使用sockets:从新闻组中获取文章
2006/10/09 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
完美解决thinkphp唯一索引重复时出错的问题
2017/03/31 PHP
php连接mysql之mysql_connect()与mysqli_connect()的区别
2020/07/19 PHP
PHP数组Key强制类型转换实现原理解析
2020/09/01 PHP
Javascript 静态页面实现随机显示广告的办法
2010/11/17 Javascript
超赞的动手创建JavaScript框架的详细教程
2015/06/30 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
教你JS中的运算符乘方、开方及变量格式转换
2016/08/09 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
React-intl 实现多语言的示例代码
2017/11/03 Javascript
Webpack中loader打包各种文件的方法实例
2019/09/03 Javascript
盘点提高 Python 代码效率的方法
2014/07/03 Python
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
python每隔N秒运行指定函数的方法
2015/03/16 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
2017/08/03 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
python 读写中文json的实例详解
2017/10/29 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
python点击鼠标获取坐标(Graphics)
2019/08/10 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
python 中Arduino串口传输数据到电脑并保存至excel表格
2019/10/14 Python
python生成特定分布数的实例
2019/12/05 Python
python Pexpect模块的使用
2020/12/25 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
社区党总支书记先进事迹材料
2014/01/24 职场文书
2014学生会工作总结报告
2014/12/02 职场文书
重阳节慰问信
2015/02/15 职场文书
超市员工辞职信范文
2015/05/12 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server