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翻译软件实现代码(使用google api完成)
Nov 26 Python
使用PDB模式调试Python程序介绍
Apr 05 Python
详解 Python中LEGB和闭包及装饰器
Aug 03 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
Aug 05 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
Python代码块及缓存机制原理详解
Dec 13 Python
Python基于QQ邮箱实现SSL发送
Apr 26 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
如何利用Python matplotlib绘制雷达图
Dec 21 Python
在Python 中将类对象序列化为JSON
Apr 06 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
php三维数组去重(示例代码)
2013/11/26 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
PHP使用两个栈实现队列功能的方法
2018/01/15 PHP
用javascript实现在小方框中浏览大图的代码
2007/08/14 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
学习ExtJS fit布局使用说明
2009/10/08 Javascript
avascript中的自执行匿名函数应用示例
2014/09/15 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
javascript-解决mongoose数据查询的异步操作
2016/12/22 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
vue轻量级框架无法获取到vue对象解决方法
2019/05/12 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
python正则表达式修复网站文章字体不统一的解决方法
2013/02/21 Python
Python中使用copy模块实现列表(list)拷贝
2015/04/14 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
python一键去抖音视频水印工具
2018/09/14 Python
Python实现打印实心和空心菱形
2019/11/23 Python
python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例
2020/02/27 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
python with语句的原理与用法详解
2020/03/30 Python
jupyter notebook 调用环境中的Keras或者pytorch教程
2020/04/14 Python
简单的命令查看安装的python版本号
2020/08/28 Python
python 装饰器重要在哪
2021/02/14 Python
询价采购方案
2014/06/09 职场文书
八项规定对照检查材料
2014/08/31 职场文书
转让协议书范本
2014/09/13 职场文书
2014年小学生迎国庆65周年演讲稿
2014/09/27 职场文书
加强作风建设心得体会
2014/10/22 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
少先队工作总结2015
2015/05/13 职场文书
超市员工管理制度
2015/08/06 职场文书
2016关于预防职务犯罪的心得体会
2016/01/21 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
CDPR谈《巫师》新作用虚幻5原因 称不会为Epic独占
2022/04/06 其他游戏