這個問題在這里已經有了答案: Python urlparse -- 提取沒有子域的域名 (7 個回答) 6 小時前關閉。
我有以下 URL 串列:
urls = ["http://arxiv.org/pdf/1611.08097", "https://doi.org/10.1109/tkde.2016.2598561", "https://www.scopus.com/inward/record.uri?partnerID=HzOxMe3b&scp=85116544648&origin=inward"]
從串列中的每一個元素,我試圖提取像剛才域名:arxiv,doi,scopus。
為此,我有一個代碼:
import re
for url in urls:
print(re.search('https?://([A-Za-z_0-9.-] ).*', url).group(1))
列印輸出:
arxiv.org
doi.org
www.scopus.com
如何修改上述正則運算式只提取域并沒有其他的東西一樣www.,.com,.org等?
提前致謝。
uj5u.com熱心網友回復:
您可以從字符類中洗掉點并制作 www。可選的。該值在捕獲組 1 中。
https?://(?:www\.)?([A-Za-z_0-9-] )
正則運算式演示
uj5u.com熱心網友回復:
要僅獲取域的倒數第二個塊,您可以將正則運算式修改為:
[re.search('https?://(?:[^/] \.)?([A-Za-z_0-9-] )\.[^/.] (?:/.*)?', url).group(1)
for url in urls]
輸出:
['arxiv', 'doi', 'scopus']
網址庫
@AbdulNiyasPM 有一個很好的答案,可惜它被洗掉了,你可以修改它以獲得你想要的:
from urllib.parse import urlparse
[urlparse(url).hostname.split('.')[-2]
for url in urls]
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371020.html
