这篇文章主要介绍了Python实现从url中提取域名的几种方法,本文给出了3种方法实现在URL中提取域名的需求,需要的朋友可以参考下。

从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/search?client=aff-cs-360chromium&hs=TSj&q=url%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90%8Dre&oq=url%E8%A7%A3%E6%9E%90%E5%9F%9F%E5%90%8Dre&gs_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实现从url中提取域名的几种方法相关推荐

  1. python变量域名_Python实现从url中提取域名的几种方法

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

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

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

  3. 支付宝支付同步回调url中携带参数的两种方法

    我的个人博客:逐步前行STEP 1. 如果要传递的参数是my_data,可以先将该参数添加到回调的url上: $return_url = "http://abcdefg.com/return ...

  4. python 从url中提取域名和path

    使用Python 内置的模块 urlparse from urlparse import * url = 'https://docs.google.com/spreadsheet/ccc?key=bl ...

  5. Python url中提取域名(获取域名、获取顶级域名、tldextract)

    安装依赖: pip install tldextract==2.2.2 # url = "https://zhplz.com" url = "http://www.bai ...

  6. 从word中提取图片的三种方法

    方法1:使用截图方法来提取并保存图片,如果你安装了QQ并且运行了的话,你可以使用Ctrl+Alt+A来截图,然后在QQ聊天框中按CTRL+V来保存图片,当然你可以在PS新建文档按CTRL+V来粘贴图片 ...

  7. wireshark提取流量包中的文件_返璞归真——流量中提取文件的五种方法

    0×00  简介 本期主要会教大家如何从流量中还原出来文件.下面我将会用5种办法来讲解. 0×01  网络流量提取文件(方法1) 1.  安装依赖 Default yum install -y lib ...

  8. Python之在字符串中引用变量的4种方法

    在字符串中加入变量有三种方法: 1.+ 连字符 name = 'zhangsan' print('my name is '+name) #结果为 my name is zhangsan 2.% 字符 ...

  9. gnuradio上怎么使用python文件_使用Python从PDF文件中提取数据

    前言 数据是数据科学中任何分析的关键,大多数分析中最常用的数据集类型是存储在逗号分隔值(csv)表中的干净数据.然而,由于可移植文档格式(pdf)文件是最常用的文件格式之一,因此每个数据科学家都应该了 ...

最新文章

  1. 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来
  2. ECLIPSE 添加插件3种方法
  3. Java不同场景加载不同类_[改善Java代码]不同的场景使用不同的泛型通配符
  4. nrf51822蓝牙学习笔记之实例分析PPI和SHORT
  5. 统计学习方法 第一章 学习笔记
  6. 读研,竞赛,与实习--公子龙的成长经历
  7. 原来Python破解受密码保护的zip文件这么简单,不保证一定成功
  8. 如何选择主机操作系统?
  9. mysql级联_MySQL 级联复制(A-B-C)
  10. 如何选择WEB报表工具(二)
  11. html 放上去动画停止,使用jQuery的animate()+CSS样式实现动画效果及stop()停止动画
  12. 关于出现Not an editor command: Bundle ‘**/*.vim‘的解决方案【转】
  13. linux加速度传感器校准,加速度传感器校准方法及装置与流程
  14. dubbo源码分析12——服务暴露3_doExportUrls()方法分析
  15. android imageview 获取bitmap缩放大小,android – Imageview缩放方法“centercrop”作为代码...
  16. 伍德里奇计量经济学导论pdf_伍德里奇 计量经济学导论 第三章第三节-1 MLR1-MLR4...
  17. 《信号与系统》(吴京)部分课后习题答案与解析——第二章(PART1)
  18. 基于堆叠双向LSTM的中文诗歌生成
  19. 7月,带你阅读图灵原创图书以及上榜新书
  20. 39、Docker(镜像命令)

热门文章

  1. 【吊炸天】TensorFlow什么的都弱爆了,强者只用Numpy搭建神经网络
  2. LeetCode 动态规划《简单》部分 Python实现
  3. 把Rust和Servo引入Firefox
  4. mysql信息函数和加密函数_MYSQL 常用函数(数学、字符串、日期时间、系统信息、加密)...
  5. 双击硬盘盘符打不开文件的处理方法
  6. 时间特效。js读取时间
  7. 为什么你的网站没流量?做不大!让我来告诉你。
  8. 联动椰树花式营销 完成债务重组的瑞幸又“站”了起来
  9. 一加10 Pro胖达白512GB至尊版发布 售价5799元
  10. 京东开通数字人民币“硬件钱包”线上消费功能