Python:可以使用urlparse从cgi-bin-URL解析域

2024-06-01 00:38:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下输入字符串

/cgi-bin/ivw/CP/dbb_ug_sp;?r=http%3A//www.some-super-domain.de/forum/viewtopic.php%3Ff%3D2%26t%3D18564%26start%3D75&d=76756.76050130278

我想使用urlparse()获取域,但是在本例中,获取netloc属性将返回一个空字符串。在

如何提取域(最佳情况:没有www)?在

需要的输出:一些超级-域.de在

请注意:有时上面的输入字符串中有没有www!在


Tags: 字符串bindomainwwwdeforumsomecp
3条回答

试试这个代码很好用:

from urlparse import urlparse
import urllib
url = '/cgi-bin/ivw/CP/dbb_ug_sp;?r=http%3A//www.some-super-domain.de/forum/viewtopic.php%3Ff%3D2%26t%3D18564%26start%3D75&d=76756.76050130278';
url= url[url.find('http'):]
url= urllib.unquote(url).decode('utf8')
result= urlparse(url);
domain = '{uri.netloc}'.format(uri=result)
if(domain.find('www.')!=None):
    domain=domain[4:]
print (domain);

我想urlparse点给你想要的你可以用这个:

m=re.search(r'(?<=www\.)[a-zA-Z\-]+\.[a-zA-Z]+',s)
print m.group(0)

结果:

^{pr2}$

试试看HERE!在

因此,如果使用urlparse,结果是:

s='/cgi-bin/ivw/CP/dbb_ug_sp;?r=http%3A//www.some-super-domain.de/forum/viewtopic.php%3Ff%3D2%26t%3D18564%26start%3D75&d=76756.76050130278'

from urlparse import urlparse
o = urlparse(s)
print o

结果:

ParseResult(scheme='', netloc='', path='/cgi-bin/ivw/CP/dbb_ug_sp', params='', query='r=http%3A//www.some-super-domain.de/forum/viewtopic.php%3Ff%3D2%26t%3D18564%26start%3D75&d=76756.76050130278', fragment='')

所以在这个结果中,您可以使用o.query访问域,但它不是您想要的,而是包含了额外的字符!在

>>>print o.query
>>>r=http%3A//www.some-super-domain.de/forum/viewtopic.php%3Ff%3D2%26t%3D18564%26start%3D75&d=76756.76050130278
www\.(.*?)\/

这个有效。请参阅演示。在

http://regex101.com/r/pP3pN1/18

相关问题 更多 >