2013-03-17 105 views
3

我想從URL列表中提取域名(站點名稱+ TLD),URL列表的格式可能不同。 例如: 現狀---->我想如何從python中的URL獲取域名(名稱+ TLD)

mail.yahoo.com------> yahoo.com 
account.hotmail.co.uk---->hotmail.co.uk 
x.it--->x.it 
google.mail.com---> google.com 

是否有任何Python代碼,可以幫助我與提取我從URL想還是應該做手工?

回答

8

這有點不平凡,因爲沒有簡單的規則來確定什麼使有效的公共後綴(網站名稱+ TLD)。相反,什麼使公共後綴是maintained as a list at PublicSuffix.org

存在查詢該列表(本地存儲)的python包;這就是所謂的publicsuffix

>>> from publicsuffix import PublicSuffixList 
>>> psl = PublicSuffixList() 
>>> print psl.get_public_suffix('mail.yahoo.com') 
yahoo.com 
>>> print psl.get_public_suffix('account.hotmail.co.uk') 
hotmail.co.uk 
+0

Thanks.Can你告訴我應該如何使用這個軟件包。下載後應打開哪個文件? – UserYmY 2013-03-17 12:53:18

+0

或者[運行'setup.py'文件](http://docs.python.org/2/install/index.html)或者使用[python安裝工具(推薦)](http://guide.python -distribute.org/installation.html)。 – 2013-03-17 12:57:25

+0

我正在使用eclipse IDE。哪一個被推薦? – UserYmY 2013-03-17 12:58:04

2

有TLD和TLD CC的public list被維護。

此python項目讀取此列表並將您的URL與此列表進行比較。

https://github.com/john-kurkowski/tldextract 
+0

@ Martijn的回答完全覆蓋了這一點。 – 2013-03-17 13:03:45

+1

它是一個替代python項目。但我認爲Martijn Pieters更好。 – 2013-03-17 13:07:46

0

使用Python TLD

https://pypi.python.org/pypi/tld

$ PIP安裝TLD

from tld import get_tld 
print get_tld("http://www.google.co.uk/some-page/some-sub-page/") 
'google.co.uk' 
+0

這是誤導。 tld是'uk'。 – Doug 2015-11-19 17:42:45

0

在這個時候,我看到有六個包做域名分裂:

他們的方式不同,他們緩存公共後綴列表數據(僅tldextract使用JSON文件,從而節約解析加載列表),用於下載數據的策略以及它們保存在內存中的結構(分別爲:凍結nset,set,set,標籤字典,同上,名字字典),它決定了搜索算法。