Python實現從url中提取網域名稱的幾種方法

2021-07-23 22:02:30 字數 2882 閱讀 5186

這篇文章主要介紹了python實現從url中提取網域名稱的幾種方法,本文給出了3種方法實現在url中提取網域名稱的需求,需要的朋友可以參考下。

從url中找到網域名稱,首先想到的是用正則,然後尋找相應的類庫。用正則解析有很多不完備的地方,url中有網域名稱,網域名稱字尾一直在不斷增加等。通過google查到幾種方法,一種是用python中自帶的模組和正則相結合來解析網域名稱,另一種是使第三方用寫好的解析模組直接解析出網域名稱。

要解析的url

複製**

**如下:

urls = ["",

"","",

"","""""",

"file:///d:/code/echarts-2.0.3/doc/example/tooltip.html",

"","",

"" ]

使用urlparse+正則的方式

複製**

**如下:

import re

from urlparse import urlparse

tophostpostfix = (

'.com','.la','.io','.co','.info','.net','.org','.me','.mobi',

'.us','.biz','.***','.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

結果都可以接受

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

tldtldextract

publicsuffix

C 中文分詞演算法 實現從文章中提取關鍵字演算法

using system using system.collections.generic using system.linq using system.text using system.collections using system.io using system.text.regularex...

hive 從url中提取需要的部分字串

事情是這樣的,hive的a表中,有url這樣的乙個字段,我想要提取這個欄位中的某一部分 這不就是擷取字串嘛 但是substring肯定是滿足不了我的需求的,自己寫hive的udf也不太現實 用最簡單的方式完成任務,才會讓後來的維護變得更加方便,否則除了維護sql還要維護一堆udf,那才叫可怕 因此我...

Python筆記從html中提取字段

def fun url url total 景區 page size 20 page num 1 ion 白山市 scope 2 output json ak 秘鑰 response requests.get url total url total html response.text print ...