2017-11-09 2 views
1

나는 이것이 빠른 것이기를 바라고있다. 나는 주어진 URL 여기.split이 예상대로 작동하지 않는 이유는 무엇입니까?

에서 두 번째 수준의 도메인을 얻기 위해 노력하고

내 코드입니다 :

url = url.split(".", 1)[1] 
    url = url.split('//', 1)[-1] 
    url = url.split("/", 0)[0] 

문제는, 마지막 줄에있다가하지 않는 것 몇 가지 이유 뭐든지해라.

나는 "http://www.nba.com/sports는"

내가

메신저 단지 각 결과 후

+0

처음과 끝에서 'url'이 어떻게 보이는지, 그리고 결과로 원하는 것이 무엇인지 보여주세요. – TerryA

+0

입력을 완료하기 전에 미안합니다. – bubba4399

+0

을 다시 확인하십시오. 왜 urlparse를 사용하지 않습니까? – Mark

답변

0

"nba.com"인쇄 url을 얻으려고 다시 "nba.com/sports을"= 얻을 URL을 공급하는 경우 당신은 당신이해야 할 일을 볼 수 있습니다 : 여기 후

>>> url = "http://www.nba.com/sports" 
>>> url = url.split(".", 1)[1] 
>>> print(url) 
nba.com/sports 

을, 우리가해야 할 일은 단지 /에서 분할 분명하다.

>>> from urllib.parse import urlparse 
>>> url = "http://www.nba.com/sports" 
>>> urlparse(url) 
ParseResult(scheme='http', netloc='www.nba.com', path='/sports', params='', query='', fragment='') 
>>> urlparse(url).netloc 
'www.nba.com' 

을 그리고 당신은 다음 첫 번째 .에서 모든 것을 제거 할 수 있습니다 : 너무 많이 복잡하게하지 마십시오 :

>>> url = url.split("/")[0] 
>>> print(url) 
nba.com 

는 @ 마크가 코멘트에서 언급 한 바와 같이, 당신은 또한 urllib.urlparse을 사용할 수 있습니다 필요하다면,하지만 당신이하고있는 것에 따라 당신은 할 필요가 없을 수도 있습니다.

파이썬 2를 사용하는 경우 모듈은 urlparse입니다. 당신 nba.com를 얻을 수

from urllib.parse import urlsplit 
# On Py2, from urlparse import urlsplit 

url = "http://www.nba.com/sports" 
domain = urlsplit(url).hostname 
# split off the last two components, then join them back together to make 
# the second level domain 
secondlevel = '.'.join(domain.rsplit('.', 2)[-2:]) 
print(secondlevel) 

:

+0

죄송합니다. 이러한 응답의 형식을 올바르게 지정하지 못했습니다. url = url.split ("/") [2]로 예제를 약간 변경해야합니다. 그렇습니다. – bubba4399

2

는 올바른 솔루션을 : 당신이 할 수있는 바퀴를 재발견하지 마십시오, 많은에 대한 the existing libraries를 사용합니다.

+0

이 문제에 대한 인터넷 검색을 수행 할 때 해당 라이브러리를 찾았지만 내 이해는 권장하지 않습니다. 전체 라이브러리는 몇 줄의 코드로 구현할 수있는 작은 기능이 필요하다. – bubba4399

+1

@ bubba4399 : 당신은 틀렸어. 하나 들어, 이것은 "기능의 작은 비트"는 아닙니다. 놀랍게도 URL 구문 분석을 일반적인 의미에서 올바르게 수행하는 것은 어렵습니다. 또 다른 이유로, 처음부터 새 코드를 작성하는 데 드는 비용은 라이브러리를 가져 오는 데 드는 막대한 비용보다 항상 높습니다. 특히 알려진 형식을 구문 분석 할 때 휠을 재발 명하지 마십시오. 당신은 * 당신의 질문이 증명하는 것처럼 그것을 잘못 잡을 것입니다. CSV를 위해'csv' 모듈을 사용하고, JSON을 위해'json' 모듈을 사용하고, URL을 위해'urllib.parse'를 사용하십시오.당신이 그것을 쓰는 유일한 시간은 학습 운동으로서 학교에 있습니다. – ShadowRanger

관련 문제