[Python]從url中解析網域名稱的幾種方法,pythonurl

來源:互聯網
上載者:User

[Python]從url中解析網域名稱的幾種方法,pythonurl
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 refrom urlparse import urlparsetopHostPostfix = (    '.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 "--"*40for 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.me1000chi.comsee.xidian.edu.cnpython.orggoogle.com.hkunkonwmongodb.orgpython.org127.0.0.1:8000

基本可以接受

urllib來解析網域名稱
import urllibprint "--"*40for url in urls:    proto, rest = urllib.splittype(url)    res, rest = urllib.splithost(rest)    print "unkonw" if not res else res

運行結果如下:

meiwen.me1000chi.comsee.xidian.edu.cndocs.python.orgwww.google.com.hkunkonwapi.mongodb.orgpypi.python.org127.0.0.1:8000

會把www.也帶上,還需要進一步解析才可以

使用第三方模組 tld
from tld import get_tldprint "--"*40for url in urls:    try:        print  get_tld(url)    except Exception as e:        print "unkonw"

運行結果:

meiwen.me1000chi.comxidian.edu.cnpython.orggoogle.com.hkunkonwmongodb.orgpython.orgunkonw

結果都可以接受

其他可以使用的解析模組:
  • tld
  • tldextract
  • publicsuffix


本文出自 “orangleliu筆記本” 部落格,請務必保留此出處http://blog.csdn.net/orangleliu/article/details/39545821


怎解析url的主網域名稱

URL裡第一個出現尾碼(如COM、CN、ORG、NET等)的一段地址,首碼改WWW或WAP就是主網地址,例如wapiknow.baidu.com/...09&qid這段地址裡,wapiknow.baidu.com是次級網域名稱,把baidu前的wapiknow改為WAP或者WWW就是百度的手機或電腦上的主域
 
網域名稱轉寄隱藏、URL解析問題?

到 網域名稱自助解析平台
開啟DNS記錄
直接在網域名稱設定裡URL轉寄,然後隱藏原地址!

URL (URL轉寄)
主機名稱 TTL 方式 URL地址
方式: 0表示隱藏轉寄,1表示不隱藏轉寄
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.