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使用asyncio包处理并发详解
Sep 09 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
python实现将多个文件分配到多个文件夹的方法
Jan 07 Python
Python 实现顺序高斯消元法示例
Dec 09 Python
python脚本后台执行方式
Dec 21 Python
python自动点赞功能的实现思路
Feb 26 Python
Pycharm中import torch报错的快速解决方法
Mar 05 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 Python
pycharm中如何自定义设置通过“ctrl+滚轮”进行放大和缩小实现方法
Sep 16 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Python爬虫之Selenium实现关闭浏览器
Dec 04 Python
用python计算文件的MD5值
Dec 23 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
SSI指令
2006/11/25 PHP
MySQL数据源表结构图示
2008/06/05 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
php array_map()数组函数使用说明
2011/07/12 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
通过PHP current函数获取未知字符键名数组第一个元素的值
2013/06/24 PHP
自己写了一个php检测文件编码的函数
2014/04/21 PHP
PHP实现腾讯与百度坐标转换
2017/08/05 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
php实现的数组转xml案例分析
2019/09/28 PHP
jquery多浏览器捕捉回车事件代码
2010/06/22 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
bootstrap实现弹窗和拖动效果
2016/01/03 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
微信小程序 MD5的方法详解及实例代码
2017/03/10 Javascript
Vue.js中轻松解决v-for执行出错的三个方案
2017/06/09 Javascript
javascript实现滚动条效果
2020/03/24 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
[02:51]2018年度DOTA2最佳中单位选手-完美盛典
2018/12/17 DOTA
win10环境下python3.5安装步骤图文教程
2017/02/03 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
2017/11/29 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
Python 删除连续出现的指定字符的实例
2018/06/29 Python
Python推导式简单示例【列表推导式、字典推导式与集合推导式】
2018/12/04 Python
手把手教你pycharm专业版安装破解教程(linux版)
2019/09/26 Python
python微信公众号开发简单流程实现
2020/03/09 Python
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
加热夹克:RAVEAN
2018/10/19 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
Java中实现多态的机制是什么?
2014/12/07 面试题
顺丰快递Java软件工程师面试题
2015/07/31 面试题
股权转让协议范本
2014/12/07 职场文书
泰坦尼克号观后感
2015/06/04 职场文书
MySQL修炼之联结与集合浅析
2021/10/05 MySQL