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中的__new__与__init__魔术方法理解笔记
Nov 08 Python
Python字符编码判断方法分析
Jul 01 Python
Python中属性和描述符的正确使用
Aug 23 Python
Python读写Json涉及到中文的处理方法
Sep 12 Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 Python
numpy使用fromstring创建矩阵的实例
Jun 15 Python
python实现的批量分析xml标签中各个类别个数功能示例
Dec 30 Python
Python进程间通信multiprocess代码实例
Mar 18 Python
基于pandas向csv添加新的行和列
May 25 Python
Python深度学习之Pytorch初步使用
May 20 Python
详解Python描述符的工作原理
Jun 11 Python
Python 阶乘详解
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
也谈 PHP 和 MYSQL
2006/10/09 PHP
PHP中基本符号及使用方法
2010/03/23 PHP
Laravel的Auth验证Token验证使用自定义Redis的例子
2019/09/30 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
仿微博字符限制效果实现代码
2012/04/20 Javascript
解析window.open的使用方法总结
2013/06/19 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
JavaScript数组随机排列实现随机洗牌功能
2015/03/19 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
vue.js 表格分页ajax 异步加载数据
2016/10/18 Javascript
JavaScript中创建对象的7种模式详解
2017/02/21 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
详解Eslint 配置及规则说明
2018/09/10 Javascript
vsCode安装使用教程和插件安装方法
2020/08/24 Javascript
nodejs搭建本地服务器并访问文件操作示例
2019/05/11 NodeJs
python抓取百度首页的方法
2015/05/19 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
2017/08/31 Python
matplotlib实现显示伪彩色图像及色度条
2019/12/07 Python
简单了解python调用其他脚本方法实例
2020/03/26 Python
python按顺序重命名文件并分类转移到各个文件夹中的实现代码
2020/07/21 Python
Python用SSH连接到网络设备
2021/02/18 Python
css3选择器基本介绍
2014/12/15 HTML / CSS
CSS3中颜色线性渐变实战
2015/07/18 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
这段代码难道不该打印出56吗
2013/02/27 面试题
初一生物教学反思
2014/01/18 职场文书
教师网络培训感言
2014/03/09 职场文书
信息工作经验交流材料
2014/05/28 职场文书
优秀会计求职信
2014/07/04 职场文书
世界读书日的活动方案
2014/08/20 职场文书
客房服务员岗位职责
2015/02/09 职场文书
请病假条范文
2015/08/17 职场文书
用Python实现屏幕截图详解
2022/01/22 Python
一文了解MYSQL三大范式和表约束
2022/04/03 MySQL