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开发中module模块用法实例分析
Nov 12 Python
Python正则获取、过滤或者替换HTML标签的方法
Jan 28 Python
Python星号*与**用法分析
Feb 02 Python
python语言中with as的用法使用详解
Feb 23 Python
对Python 文件夹遍历和文件查找的实例讲解
Apr 26 Python
详解将Django部署到Centos7全攻略
Sep 26 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
Python3调用百度AI识别图片中的文字功能示例【测试可用】
Mar 13 Python
pycharm配置git(图文教程)
Aug 16 Python
Anaconda的安装及其环境变量的配置详解
Apr 22 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
Python利用Turtle绘制哆啦A梦和小猪佩奇
Apr 04 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 彩色文字实现代码
2009/06/29 PHP
php结合表单实现一些简单功能的例子
2011/06/04 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
JS实现点击下载的小例子
2013/07/10 Javascript
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
微信WeixinJSBridge API使用实例
2015/05/25 Javascript
jquery+php随机生成红包金额数量代码分享
2015/08/27 Javascript
jquery+json实现数据二级联动的方法
2015/11/28 Javascript
JavaScript中捕获与冒泡详解及实例
2017/02/03 Javascript
又一款MVVM组件 构建自己的Vue组件(2)
2017/03/13 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
vue注册组件的几种方式总结
2018/03/08 Javascript
解决vue 引入子组件报错的问题
2018/09/06 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
python Django连接MySQL数据库做增删改查
2013/11/07 Python
python的else子句使用指南
2016/02/27 Python
Python的Django中将文件上传至七牛云存储的代码分享
2016/06/03 Python
Python处理json字符串转化为字典的简单实现
2016/07/07 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
python matplotlib 在指定的两个点之间连线方法
2018/05/25 Python
Python学习小技巧总结
2018/06/10 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python with (as)语句实例详解
2020/02/04 Python
浅析PyCharm 的初始设置(知道)
2020/10/12 Python
Python安装第三方库攻略(pip和Anaconda)
2020/10/15 Python
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
配置管理计划的主要内容有哪些
2014/06/20 面试题
网络工程师专家职业发展路线
2014/02/14 职场文书
本科应届生求职信
2014/08/05 职场文书
食品质量与安全专业毕业生求职信
2014/08/11 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
如何使用php生成zip压缩包
2021/04/21 PHP
对PyTorch中inplace字段的全面理解
2021/05/22 Python