有一个需求就是需要对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 redef 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  + topelse:  # 说明提取域名失败,例如172.31.137.240等IP形式,此时全部当作主机域名server = ''host = server_domaintop = ''hostname = server_domainreturn server, host, top, hostnamedef url_split_new(url):'''url分割'''if not url.startswith('http'):  # 补全协议,否则urlparse出错url = 'http://' + urlparts = 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得到域名、协议、主机名等各个字段相关推荐

  1. 域名、主机名与URL

    什么是域名? google.com.baidu.com.163.com等. 域名.主机名与URL例子 例子1: http://mail.163.com/index.html 1)http://:这个是 ...

  2. gethostbyname函数用域名或主机名获取IP地址

    struct hostent *gethostbyname(const char *name);    这个函数的传入值是域名或者主机名,例如"www.google.cn"等等.传 ...

  3. 域名,主机名,网站名,URL

    平时说的google.com,baidu.com,163.com属于域名,要是加上www就是网站名了 以http://mail.163.com/index.html为例进行说明: 1)http://: ...

  4. Python 技术篇 - 修改源码解决中文主机名导致的flask、socket服务起不来问题: ‘utf-8‘ codec can‘t decode byte 0xc0 in position...

    由于主机名为中文导致的 flask 服务起不来,报错如下: File "D:\work\python3.9_64\lib\socket.py", line 791, in getf ...

  5. (域名、主机名、服务名、端口号)名字与地址的转换 (gethostbyname、getservbyname、getaddrinfo、getnameinfo等)

    转载地址 本章讲述在名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IP地址间进行转换,getservbyname和getservbyport在服务器 ...

  6. 域名中主机名是第几个_如何设置二级域名解析?有什么设置方法?

    如何设置二级域名解析?有什么设置方法?二级域名也属于一个独立的分支,有自己的收录.快照.PR值.反链等.在网站建设的时候,用户经常会需要设置二级域名,为自己的网站增加新的程序,或者为网站内容提供更好的 ...

  7. 域名中主机名是第几个_CentOS7系统如何修改主机名

    请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文将讲解CentOS7系统如何修改主机名. 本教程将 ...

  8. VirusTotal api 在 python 中的 URL,域名使用

    URL 发送并扫描URL 首先发送扫描一个url,要向https://www.virustotal.com/vtapi/v2/url/scan 发送一个http post 请求, 其中api 接受请求 ...

  9. 域名、主机名、网站名以及 URL 基础概念

  10. IP地址、域名、主机名

最新文章

  1. Bzoj4016: [FJOI2014]最短路径树问题
  2. Eclipse启动之四 : Eclipse核心框架启动(百度空间迁移)
  3. python基础教程第三版怎么样-Python基础教程(第三版)(七)再谈抽象
  4. 解决 webstrom sass 注释中文出错问题
  5. WIN32下(非MFC)自编TRACE
  6. 897A. Scarborough Fair# 斯卡布罗集市(模拟)
  7. 全排列算法原理和实现
  8. hive UDF函数
  9. Java 时间处理(格式解释、格式化时间、获取当前时间、获取年份、月份等、时间戳转换成时间)
  10. Java 基础类型int 与 Integer
  11. Ant-编译构建(2)-第3方jar包引入、log4j2
  12. 在Idea中拉取svn分支
  13. c 自动打印的服务器,clodop云打印服务器(c_lodop打印机不打印)
  14. dalek-cryptography 与adjoint-io bulletpoofs性能对比
  15. [渝粤教育] 中央财经大学 保险学概论 参考 资料
  16. torch中(required_grad_=True),根据mask替换掉部分值
  17. 白天不去搜寻痛苦,但晚上却不能抑制
  18. Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
  19. 阿里妈妈展示广告召回之多场景建模算法
  20. 软件即服务(saas)_什么是SaaS? 定义软件即服务

热门文章

  1. SpringMVC + AJAX 实现多文件异步上传
  2. iOS 获取设备的方向
  3. 解决升级PHP7后 微信公众号收不到消息
  4. CentOS 7 / RHEL 7 上安装 LAMP + phpMyAdmin
  5. Python初识以及变量
  6. [状压dp][剪枝搜索] 洛谷 P2831 愤怒的小鸟
  7. PAT 1005 继续(3n+1)猜想
  8. springboot问题记录
  9. 洛谷 P2383 狗哥玩木棒
  10. ajax取消重复请求