2012-06-05 2 views
32

다른 방법으로 URL을 구성하고이 방법의 동작을 이해하는 데 어려움이 있습니다. 예를 들어 :Python : urljoin과의 혼동

파이썬 3.x를

from urllib.parse import urljoin 

>>> urljoin('some', 'thing') 
'thing' 
>>> urljoin('http://some', 'thing') 
'http://some/thing' 
>>> urljoin('http://some/more', 'thing') 
'http://some/thing' 
>>> urljoin('http://some/more/', 'thing') # just a tad/after 'more' 
'http://some/more/thing' 
urljoin('http://some/more/', '/thing') 
'http://some/thing' 

당신은이 방법의 정확한 동작을 설명 할 수 있습니까?

+0

이 질문에 대한 사람들의 메모 : 위의 import 문은 Python 3.x 용입니다. 파이썬 2.x에서는 "from urlparse import urljoin"을 사용하십시오. –

답변

51

내 생각에 가장 좋은 방법은 첫 번째 인수인데 base은 브라우저에있는 페이지와 같습니다. 두 번째 인수 url은 해당 페이지의 앵커 href입니다. 결과는 클릭해야하는 최종 URL입니다.

>>> urljoin('some', 'thing') 
'thing' 

이 설명은 의미가 있습니다. 하나는 기본이 계획과 도메인을 포함하기를 기대하지만. 당신이 어떤 가상 호스트에, 그리고 앵커가 <a href='thing'>Foo</a> 같이있는 경우

>>> urljoin('http://some', 'thing') 
'http://some/thing' 

다음 링크가 너무 thing의 상대 링크 것, 우리는 여기 some/more에있는 http://some/thing

>>> urljoin('http://some/more', 'thing') 
'http://some/thing' 

로 이동합니다 우리가 some/more에없는, 여기 /some/thing

>>> urljoin('http://some/more/', 'thing') # just a tad/after 'more' 
'http://some/more/thing' 

우리를 가지고, 우리는 012에 있습니다이 다릅니다. 지금, 우리의 상대 링크는 some/more/thing

>>> urljoin('http://some/more/', '/thing') 
'http://some/thing' 

그리고 마지막으로 우리를 취할 것입니다. some/more/ 및 href가 /thing 인 경우 some/thing에 연결됩니다.

+0

설명 주셔서 감사합니다 ... 이런 종류의 동작은'os.path.join'과 유사한 'true''urljoin'을 찾습니다. –