python實(shí)現(xiàn)切割url得到域名、協(xié)議、主機(jī)名等各個(gè)字段的例子
更新時(shí)間:2019年07月25日 08:58:42 作者:Together_CZ
今天小編就為大家分享一篇python實(shí)現(xiàn)切割url得到域名、協(xié)議、主機(jī)名等各個(gè)字段的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
有一個(gè)需求就是需要對(duì)url進(jìn)行進(jìn)一步的劃分得到詳細(xì)的各個(gè)字段信息,下面是簡(jiǎn)單的實(shí)現(xiàn):
#!/usr/bin/python
# -*- coding: UTF-8 -*-
'''
__Author__:沂水寒城
功能: 對(duì)URL進(jìn)行分割,基于urlparse, publicsuffix, urllib編寫
'''
from urlparse import urlparse
import codecs
from publicsuffix import PublicSuffixList
from urllib import splitport
import re
def domain_split(server_domain):
'''
server_domain為網(wǎng)站所用服務(wù)名+域名
分割域名, 得到前綴(服務(wù)名)、主機(jī)域名、后綴(頂級(jí)域名)
輸入www.baidu.com,輸出'www', 'baidu', 'com'
輸入172.31.137.240,輸出'', '172.31.137.240', ''
'''
PSL_FILE = codecs.open('public_suffix_list.dat', encoding='utf8')
psl = PublicSuffixList(PSL_FILE)
domain = psl.get_public_suffix(server_domain)
# 取域名的第一個(gè)字段,即第一個(gè)'.'之前的為主機(jī)域名, 后面為頂級(jí)域名,前面為所使用的服務(wù)
if '.' in domain:
server = server_domain[:-len(domain)]
host = domain[:domain.index('.')]
top = domain[domain.index('.'):]
hostname = server + host + top
else: # 說明提取域名失敗,例如172.31.137.240等IP形式,此時(shí)全部當(dāng)作主機(jī)域名
server = ''
host = server_domain
top = ''
hostname = server_domain
return server, host, top, hostname
def url_split_new(url):
'''
url分割
'''
if not url.startswith('http'): # 補(bǔ)全協(xié)議,否則urlparse出錯(cuò)
url = 'http://' + url
parts = urlparse(url)
# 服務(wù)+域名'www.baidu.api.com.cn'切分
server, host, top, hostname = domain_split(parts.netloc)
host, port = splitport(host)
if port == None: port = ''
return {'protocol': parts.scheme, 'hostname': hostname, 'path': parts.path}
if __name__ == '__main__':
print url_split_new('http://www.baidu.com/')
print url_split('http://www.baidu.com/')
以上這篇python實(shí)現(xiàn)切割url得到域名、協(xié)議、主機(jī)名等各個(gè)字段的例子就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django跨域請(qǐng)求原理及實(shí)現(xiàn)代碼
這篇文章主要介紹了Django跨域請(qǐng)求原理及實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Python OpenCV實(shí)現(xiàn)攝像頭人臉識(shí)別功能
這篇文章主要介紹了Python OpenCV實(shí)現(xiàn)攝像頭人臉識(shí)別,使用Python 3和OpenCV進(jìn)行攝像頭人臉識(shí)別的基本步驟,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07
django進(jìn)階之cookie和session的使用示例
這篇文章主要介紹了django進(jìn)階之cookie和session的使用示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08
python 捕獲shell腳本的輸出結(jié)果實(shí)例
下面小編就為大家?guī)硪黄猵ython 捕獲shell腳本的輸出結(jié)果實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01

