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查看多台服务器进程的脚本分享
Jun 11 Python
python内存管理分析
Apr 08 Python
Python分析学校四六级过关情况
Nov 22 Python
Python实现的端口扫描功能示例
Apr 08 Python
python一行sql太长折成多行并且有多个参数的方法
Jul 19 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
如何使用python把ppt转换成pdf
Jun 29 Python
OpenCV 边缘检测
Jul 10 Python
基于keras中的回调函数用法说明
Jun 17 Python
Python实现爬取并分析电商评论
Jun 19 Python
python如何进行基准测试
Apr 26 Python
Python与C++中梯度方向直方图的实现
Mar 17 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中检查PHP文件是否有语法错误的方法
2009/12/23 PHP
php在文件指定行中写入代码的方法
2012/05/23 PHP
利用php实现禁用IE和火狐的缓存问题
2012/12/03 PHP
php下拉选项的批量操作的实现代码
2013/10/14 PHP
PHP批量上传图片的具体实现方法介绍.
2014/02/26 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
div浮层,滚动条移动,位置保持不变的4种方法汇总
2013/12/11 Javascript
将页面table内容与样式另存成excel文件的方法
2015/08/05 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
Bootstrap选项卡与Masonry插件的完美结合
2016/07/06 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
vue-router 学习快速入门
2017/03/01 Javascript
socket.io实现在线群聊功能
2017/04/07 Javascript
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
详解JS构造函数中this和return
2017/09/16 Javascript
Vue插槽原理与用法详解
2019/03/05 Javascript
JavaScript中this的全面解析及常见实例
2019/05/14 Javascript
微信小程序中插入激励视频广告并获取收益(实例代码)
2019/12/06 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
[02:50]【扭转乾坤,只此一招】DOTA2永雾林渊版本开启新篇章
2020/12/22 DOTA
Python写的PHPMyAdmin暴力破解工具代码
2014/08/06 Python
Python NumPy库安装使用笔记
2015/05/18 Python
python好玩的项目—色情图片识别代码分享
2017/11/07 Python
由Python编写的MySQL管理工具代码实例
2019/04/09 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
Html5实现如何在两个div元素之间拖放图像
2013/03/29 HTML / CSS
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
公安机关查摆剖析材料
2014/10/10 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
创卫工作总结2015
2015/04/22 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android