python实现切割url得到域名、协议、主机名等各个字段
有一个需求就是需要对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得到域名、协议、主机名等各个字段相关推荐
- 域名、主机名与URL
什么是域名? google.com.baidu.com.163.com等. 域名.主机名与URL例子 例子1: http://mail.163.com/index.html 1)http://:这个是 ...
- gethostbyname函数用域名或主机名获取IP地址
struct hostent *gethostbyname(const char *name); 这个函数的传入值是域名或者主机名,例如"www.google.cn"等等.传 ...
- 域名,主机名,网站名,URL
平时说的google.com,baidu.com,163.com属于域名,要是加上www就是网站名了 以http://mail.163.com/index.html为例进行说明: 1)http://: ...
- 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 ...
- (域名、主机名、服务名、端口号)名字与地址的转换 (gethostbyname、getservbyname、getaddrinfo、getnameinfo等)
转载地址 本章讲述在名字和数值地址间进行转换的函数:gethostbyname和gethostbyaddr在主机名字与IP地址间进行转换,getservbyname和getservbyport在服务器 ...
- 域名中主机名是第几个_如何设置二级域名解析?有什么设置方法?
如何设置二级域名解析?有什么设置方法?二级域名也属于一个独立的分支,有自己的收录.快照.PR值.反链等.在网站建设的时候,用户经常会需要设置二级域名,为自己的网站增加新的程序,或者为网站内容提供更好的 ...
- 域名中主机名是第几个_CentOS7系统如何修改主机名
请关注本头条号,每天坚持更新原创干货技术文章. 如需学习视频,请在微信搜索公众号"智传网优"直接开始自助视频学习 1. 前言 本文将讲解CentOS7系统如何修改主机名. 本教程将 ...
- VirusTotal api 在 python 中的 URL,域名使用
URL 发送并扫描URL 首先发送扫描一个url,要向https://www.virustotal.com/vtapi/v2/url/scan 发送一个http post 请求, 其中api 接受请求 ...
- 域名、主机名、网站名以及 URL 基础概念
- IP地址、域名、主机名
最新文章
- Bzoj4016: [FJOI2014]最短路径树问题
- Eclipse启动之四 : Eclipse核心框架启动(百度空间迁移)
- python基础教程第三版怎么样-Python基础教程(第三版)(七)再谈抽象
- 解决 webstrom sass 注释中文出错问题
- WIN32下(非MFC)自编TRACE
- 897A. Scarborough Fair# 斯卡布罗集市(模拟)
- 全排列算法原理和实现
- hive UDF函数
- Java 时间处理(格式解释、格式化时间、获取当前时间、获取年份、月份等、时间戳转换成时间)
- Java 基础类型int 与 Integer
- Ant-编译构建(2)-第3方jar包引入、log4j2
- 在Idea中拉取svn分支
- c 自动打印的服务器,clodop云打印服务器(c_lodop打印机不打印)
- dalek-cryptography 与adjoint-io bulletpoofs性能对比
- [渝粤教育] 中央财经大学 保险学概论 参考 资料
- torch中(required_grad_=True),根据mask替换掉部分值
- 白天不去搜寻痛苦,但晚上却不能抑制
- Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
- 阿里妈妈展示广告召回之多场景建模算法
- 软件即服务(saas)_什么是SaaS? 定义软件即服务