从url中找到域名,首先想到的是用正则,然后寻找相应的类库。用正则解析有很多不完备的地方,url中有域名,域名后缀一直在不断增加等。通过google查到几种方法,一种是用Python中自带的模块和正则相结合来解析域名,另一种是使第三方用写好的解析模块直接解析出域名。

要解析的url

代码如下:

urls = [“http://meiwen.me/src/index.html”,

“http://1000chi.com/game/index.html”,

“http://see.xidian.edu.cn/cpp/html/1429.html”,

“https://docs.python.org/2/howto/regex.html”,

“””https://www.google.com.hk/searchclient=aff-cs-360chromiumhs=TSjq=url%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90%8Dreoq=url%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90%8Dregs_l=serp.3…74418.86867.0.87673.28.25.2.0.0.0.541.2454.2-6j0j1j1.8.0….0…1c.1j4.53.serp..26.2.547.IuHTj4uoyHg”””,

“file:///D:/code/echarts-2.0.3/doc/example/tooltip.html”,

“http://api.mongodb.org/python/current/faq.html#is-pymongo-thread-safe”,

“https://pypi.python.org/pypi/publicsuffix/”,

“http://127.0.0.1:8000”

]

使用urlparse+正则的方式

代码如下:

import re

from urlparse import urlparse

topHostPostfix = (

‘.com’,’.la’,’.io’,’.co’,’.info’,’.net’,’.org’,’.me’,’.mobi’,

‘.us’,’.biz’,’.xxx’,’.ca’,’.co.jp’,’.com.cn’,’.net.cn’,

‘.org.cn’,’.mx’,’.tv’,’.ws’,’.ag’,’.com.ag’,’.net.ag’,

‘.org.ag’,’.am’,’.asia’,’.at’,’.be’,’.com.br’,’.net.br’,

‘.bz’,’.com.bz’,’.net.bz’,’.cc’,’.com.co’,’.net.co’,

‘.nom.co’,’.de’,’.es’,’.com.es’,’.nom.es’,’.org.es’,

‘.eu’,’.fm’,’.fr’,’.gs’,’.in’,’.co.in’,’.firm.in’,’.gen.in’,

‘.ind.in’,’.net.in’,’.org.in’,’.it’,’.jobs’,’.jp’,’.ms’,

‘.com.mx’,’.nl’,’.nu’,’.co.nz’,’.net.nz’,’.org.nz’,

‘.se’,’.tc’,’.tk’,’.tw’,’.com.tw’,’.idv.tw’,’.org.tw’,

‘.hk’,’.co.uk’,’.me.uk’,’.org.uk’,’.vg’, “.com.hk”)

regx = r'[^\.]+(‘+’|’.join([h.replace(‘.’,r’\.’) for h in topHostPostfix])+’)$’

pattern = re.compile(regx,re.IGNORECASE)

print “–“*40

for url in urls:

parts = urlparse(url)

host = parts.netloc

m = pattern.search(host)

res = m.group() if m else host

print “unkonw” if not res else res

运行结果如下:

代码如下:

meiwen.me

1000chi.com

see.xidian.edu.cn

python.org

google.com.hk

unkonw

mongodb.org

python.org

127.0.0.1:8000

基本可以接受

urllib来解析域名

代码如下:

import urllib

print “–“*40

for url in urls:

proto, rest = urllib.splittype(url)

res, rest = urllib.splithost(rest)

print “unkonw” if not res else res

运行结果如下:

代码如下:

meiwen.me

1000chi.com

see.xidian.edu.cn

docs.python.org

www.google.com.hk

unkonw

api.mongodb.org

pypi.python.org

127.0.0.1:8000

会把www.也带上,还需要进一步解析才可以

使用第三方模块 tld

代码如下:

from tld import get_tld

print “–“*40

for url in urls:

try:

print get_tld(url)

except Exception as e:

print “unkonw”

运行结果:

代码如下:

meiwen.me

1000chi.com

xidian.edu.cn

python.org

google.com.hk

unkonw

mongodb.org

python.org

unkonw

结果都可以接受

其他可以使用的解析模块:

tld

tldextract

publicsuffix

python变量域名_Python实现从url中提取域名的几种方法相关推荐

  1. python3 提取url中域名部分_python 从网址(url)中提取域名和path

    python 从url中提取域名和path python2代码 from urlparse import * url='http://www.chenxm.cc/post/719.html' res= ...

  2. Python实现从url中提取域名的几种方法

    这篇文章主要介绍了Python实现从url中提取域名的几种方法,本文给出了3种方法实现在URL中提取域名的需求,需要的朋友可以参考下. 从url中找到域名,首先想到的是用正则,然后寻找相应的类库.用正 ...

  3. python listbox排序_python – 从tkinter.Listbox中提取项目列表

    我编写了以下tkinter脚本来了解如何将数据列表添加到tkinter.Listbox小部件中.我发现了两种方法. 接下来,我想从tkinter.Listbox小部件中提取相同的列表.在4种不同的方法 ...

  4. php正则表达式 域名,PHP正则表达式从url中取得域名

    以下代码可以从URL中获得域名 例如: 得到yyoo.cn function get_domain($url){ $pattern = "/[\w-]+\.(com|net|org|gov| ...

  5. php使用正则表达式获取域名,PHP正则表达式从url中取得域名

    以下代码可以从URL中获得域名 例如:http://souzz.net/html/database/ORACLE/69613.html 得到souzz.net function get_domain( ...

  6. python自动翻译pdf_python实现从pdf文件中提取文本,并自动翻译的方法

    针对Python 3.5.2 测试 首先安装两个包: $ pip install googletrans $ pip install pdfminer3k googletrans会提供一个命令tran ...

  7. python 运算符重载_Python 炫技操作:模块重载的五种方法

    点击上方"Python编程时光",选择"加为星标"第一时间关注Python技术干货!明哥原创的200页<PyCharm 中文指南> 震撼发布 系列文 ...

  8. python取出字典中最大值_python找出字典中value最大值的几种方法

    假设定义一字典,m = {"a":3,"e":6,"b":2,"g":7,"f":7,"c ...

  9. python字典找出年龄最大的人_python找出字典中value最大值的几种方法

    假设定义一字典,m = {"a":3,"e":6,"b":2,"g":7,"f":7,"c ...

最新文章

  1. 【学习摘录】推荐算法
  2. linux 常用命令总结
  3. Hibernate -- Dao层 -- CURD -- 随记
  4. 机器人锤石下路组合_下周二,极智嘉研发总监讲解物流机器人视觉感知与定位关键技术...
  5. 手机版网页开发_华为低调发布鸿蒙OS手机开发者Beta版,明年覆盖1亿台设备
  6. 八十八、Python | 十大排序算法系列(下篇)
  7. 2011年CDMA终端谁将给力?
  8. 误差函数拟合优缺点_欠拟合、过拟合及如何防止过拟合
  9. Java中 volatile 关键字的最全总结,赶快给自己查缺补漏吧!
  10. 听鲍宏图解读微软企业级市场战略
  11. Unity如何设置两个玩家
  12. 中国塑料食品和饮料包装行业市场供需与战略研究报告
  13. 修改joomla!底部版权信息的方法
  14. 7-1 xbmc学习笔记
  15. 【数据结构】线性处理字符串中指定字串的个数问题
  16. 生信技能树linux虚拟机,【生信技能树】Linux练习
  17. C#使用oledb连接excel执行Insert Into语句出现“操作必须使用一个可更新的查询”的解决办法
  18. Spark独到见解--Transformation算子总结
  19. 构造图片对网络进行对抗攻击n+m=7
  20. c#读蓝牙数据_c# – 将蓝牙设备连接到具有32feet .NET蓝牙库的计算机

热门文章

  1. 2020 中国高校薪资排行出炉!好过双一流的高校原来这么多!
  2. 20分钟+1080显卡,能跑多复杂的模型?
  3. 计算机视觉的数据增广技术大盘点!附涨点神器,已开源!
  4. 打造计数君!谷歌提出RepNet:可自动计数视频重复片段 | CVPR 2020
  5. Python 官方报告:哪些库最受欢迎、PyCharm 比 VScode更香?
  6. 用Python分析了十年电影票房,原来我错过了这么多好电影!
  7. 权限表管理之获取用户权限表列表数据
  8. MATLAB_4-形态学_腐蚀_膨胀_灰度图的腐蚀以及膨胀_开运算_闭运算_文章末尾有几个素材例子
  9. linux硬链接与软链接
  10. C语言指针调用函数_只愿与一人十指紧扣_新浪博客