Python实现从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 = ( regx = r'[^.]+('+'|'.join([h.replace('.',r'.') for h in topHostPostfix])+')$' print "--"*40 运行结果如下: 复制代码 代码如下: 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 运行结果如下: 复制代码 代码如下: 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 运行结果: 复制代码 代码如下: meiwen.me 1000chi.com xidian.edu.cn python.org google.com.hk unkonw mongodb.org python.org unkonw 结果都可以接受 其他可以使用的解析模块: tld (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |