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日期操作学习笔记
Oct 07 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
python爬取网页内容转换为PDF文件
Jul 28 Python
对python中的 os.mkdir和os.mkdirs详解
Oct 16 Python
python networkx 根据图的权重画图实现
Jul 10 Python
Python使用贪婪算法解决问题
Oct 22 Python
pytorch程序异常后删除占用的显存操作
Jan 13 Python
Python list运算操作代码实例解析
Jan 20 Python
初学者学习Python好还是Java好
May 26 Python
python实现网页录音效果
Oct 26 Python
Python爬虫破解登陆哔哩哔哩的方法
Nov 17 Python
Python Django模型详解
Oct 05 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
function.inc.php超越php
2006/12/09 PHP
php 注释规范
2012/03/29 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP的preg_match匹配字符串长度问题解决方法
2014/05/03 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
Javascript Math ceil()、floor()、round()三个函数的区别
2010/03/09 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
javascript 原型继承介绍
2011/08/30 Javascript
基于jquery实现的可编辑下拉框实现代码
2014/08/02 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
jquery图片切换实例分析
2015/04/15 Javascript
jquery ui resize 中border-box的bug修正
2015/04/26 Javascript
JavaScript中判断两个字符串是否相等的方法
2015/07/07 Javascript
关于JavaScript和jQuery的类型判断详解
2016/10/08 Javascript
Angularjs验证用户输入的字符串是否为日期时间
2017/06/01 Javascript
如何理解Vue的render函数的具体用法
2017/08/30 Javascript
在vue项目中引入高德地图及其UI组件的方法
2018/09/04 Javascript
微信小程序自定义弹窗wcPop插件
2018/11/19 Javascript
详解Python中with语句的用法
2015/04/15 Python
Python 判断是否为质数或素数的实例
2017/10/30 Python
python+openCV调用摄像头拍摄和处理图片的实现
2019/08/06 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
美国翻新电子产品商店:The Store
2019/10/08 全球购物
物流专业大学生的自我鉴定
2013/11/13 职场文书
员工工作表扬信范文
2014/01/13 职场文书
火锅店营销方案
2014/02/26 职场文书
股权转让协议书
2014/04/12 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
新学期红领巾广播稿
2014/10/04 职场文书
2014年文明创建工作总结
2014/11/25 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
2015年大学学生会工作总结
2015/05/13 职场文书
CSS 还能这样玩?奇思妙想渐变的艺术
2021/04/27 HTML / CSS
bootstrapv4轮播图去除两侧阴影及线框的方法
2022/02/15 HTML / CSS