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 相关文章推荐
在GitHub Pages上使用Pelican搭建博客的教程
Apr 25 Python
Python网络爬虫实例讲解
Apr 28 Python
Python使用pymysql小技巧
Jun 04 Python
python进程管理工具supervisor的安装与使用教程
Sep 05 Python
python机器学习理论与实战(五)支持向量机
Jan 19 Python
python模块导入的细节详解
Dec 10 Python
使用Django连接Mysql数据库步骤
Jan 15 Python
对PyQt5基本窗口控件 QMainWindow的使用详解
Jun 19 Python
Python 矩阵转置的几种方法小结
Dec 02 Python
Python递归及尾递归优化操作实例分析
Feb 01 Python
Python matplotlib修改默认字体的操作
Mar 05 Python
PyQt5中QSpinBox计数器的实现
Jan 18 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 header下载函数
2014/01/31 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
phpmailer简单发送邮件的方法(附phpmailer源码下载)
2016/06/13 PHP
visual studio code 调试php方法(图文详解)
2017/09/15 PHP
CodeIgniter框架数据库基本操作示例
2018/05/24 PHP
PHP获取MySQL执行sql语句的查询时间方法
2018/08/21 PHP
Aster vs Newbee BO5 第二场2.19
2021/03/10 DOTA
突发奇想的一个jquery插件
2010/11/19 Javascript
JQuery处理json与ajax返回JSON实例代码
2014/01/03 Javascript
js对象转json数组的简单实现案例
2014/02/28 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
jQuery截取指定长度字符串的实现原理及代码
2014/07/01 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
不用一句js代码初始化组件
2016/01/27 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
jQuery easyui刷新当前tabs的方法
2016/09/23 Javascript
js实现随机抽选效果、随机抽选红色球效果
2017/01/13 Javascript
浅析vue.js数组的变异方法
2018/06/30 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
python检测lvs real server状态
2014/01/22 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
python爬虫中get和post方法介绍以及cookie作用
2018/02/08 Python
python实现logistic分类算法代码
2020/02/28 Python
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
TCP/IP中的TCP和IP分别承担什么责任
2012/04/21 面试题
一些Solaris面试题
2015/12/22 面试题
开门红主持词
2014/04/02 职场文书
心理学专业求职信
2014/06/16 职场文书
私人委托书格式
2014/09/10 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2021-4-5课程——SQL Server查询【3】
2021/04/05 SQL Server
Python中OpenCV实现简单车牌字符切割
2021/06/11 Python
Windows Server 2012 R2 磁盘分区教程
2022/04/29 Servers
mysql幻读详解实例以及解决办法
2022/06/16 MySQL