Python의 Urljoin 소개
이 튜토리얼은 Python urljoin
과 이를 사용할 때의 동작을 설명합니다. 또한 다른 예제 코드를 사용하여 Python에서 urljoin
을 사용하는 방법을 보여줍니다.
Python의 urljoin
소개
URL에는 일반적으로 웹 사이트, 참가자의 검색 또는 각 영역의 자료 배열을 평가할 때 활용할 수 있는 필수 정보가 포함됩니다.
때때로 URL이 매우 복잡해 보이더라도 Python은 URL을 구문 분석하고 조인하고 URL의 구성 요소를 검색할 수 있는 다양한 유용한 라이브러리와 함께 제공됩니다.
Python 3의 urllib
패키지를 사용하면 사용자가 스크립트 내에서 웹 사이트를 탐색할 수 있으며 urljoin()
과 같은 URL 기능을 관리하기 위한 여러 모듈이 포함되어 있습니다.
urllib
라이브러리는 사용자가 Universal Resource Locator를 사용하여 웹 사이트를 방문하고 상호 작용할 수 있도록 하는 Python 프로그래밍에서 URL을 사용할 때 중요합니다.
또한 이 라이브러리는 urllib.request
, urllib.error
, urllib.parse
및 urllib.robotparser
와 같은 더 많은 패키지를 제공합니다.
urljoin()
메서드 사용
urljoin()
메서드는 많은 관련 URL이 필요한 경우에 유용합니다. 예를 들어 웹사이트에 대해 생성될 페이지 집합의 URL과 기본 URL에 새 값을 추가합니다.
통사론:
urljoin(baseurl, newurl, allowFrag=None)
기본 URL(baseurl
)과 다른 URL(newurl
)을 결합하여 전체 URL을 구성한 후 비공식적으로 기본 URL의 일부를 주소 지정 체계, 네트워크 위치 및 경로로 사용하여 누락된 부분을 제공합니다. 상대 URL.
예로서:
>>> from urllib.parse import urljoin
>>> urljoin('http://www.cwi.nl:50/%7Eguido/Python.html', 'FAQ.html')
출력:
'http://www.cwi.nl:50/%7Eguido/FAQ.html'
allowFrag
인수는 urlparse()
와 동일한 의미 및 기본값으로 구성됩니다. newurl
이 //
또는 scheme://
로 시작하는 절대 URL인 경우 newurl
의 hostname
및/또는 scheme
이 출력에 표시됩니다. 예로서:
>>> from urllib.parse import urljoin
>>> urljoin('http://www.cwi.nl:50/%7Eguido/Python.html', '//www.python.org/%7Eguido')
출력:
'https://www.python.org/%7Eguido'
출력이 예외가 아닌 경우 urlsplit()
및 urlunsplit()
을 사용하여 newurl
을 사전 처리하여 가능한 체계 및 네트워크 위치 부분을 분리합니다.
함수에 관심이 있는 경우 urlparse()
, urlsplit()
및 urlunsplit()
의 기능이 아래에 간략하게 설명되어 있습니다.
urlparse()
- 이 모듈을 사용하면 URL을 다른 부분으로 빠르게 분리하고 URL에서 특정 부분을 필터링할 수 있습니다.urlsplit()
- 이 모듈은urlparse()
의 대안이지만 URL에서 매개변수를 분할하지 않는다는 점에서 다릅니다.urlsplit()
모듈은 각 경로 세그먼트에 대한 매개변수를 지원하는RFC 2396
을 따르는 URL에 유용합니다.urlunsplit()
- 이 모듈의 기능은urlsplit()
에 의해 반환된 튜플의 요소를 결합하여 문자열로 완전한 URL을 형성하는 것입니다.
urljoin()
모듈을 사용하여 URL 구축
Python의 requests
모듈은 URL을 구축하고 URL 값을 동적으로 조작하는 데 도움을 줄 수 있습니다. 프로그래밍 방식으로 URL의 모든 하위 디렉터리를 가져온 다음 URL의 일부를 새 값으로 대체하여 새 URL을 만들 수 있습니다.
다음 코드 펜스는 urljoin()
을 사용하여 URL 경로에서 다른 하위 폴더를 가져옵니다. urljoin()
은 URL을 구축할 기본 URL에 새 값을 추가하는 데 사용됩니다.
from requests.compat import urljoin
base = "https://stackoverflow.com/questions/10893374"
print(urljoin(base, "."))
print(urljoin(base, ".."))
print(urljoin(base, "..."))
print(urljoin(base, "/10893374/"))
url_query = urljoin(base, "?vers=1.0")
print(url_query)
url_sec = urljoin(url_query, "#section-5.4")
print(url_sec)
출력:
https://stackoverflow.com/questions/
https://stackoverflow.com/
https://stackoverflow.com/questions/...
https://stackoverflow.com/10893374/
https://stackoverflow.com/questions/10893374?vers=1.0
https://stackoverflow.com/questions/10893374?vers=1.0#section-5.4
Python에서 URL을 분할하는 방법이 있습니까? 물론 예!
URL을 기본 주소 이외의 여러 구성 요소로 분할할 수 있습니다. URL에 첨부된 특정 쿼리 또는 태그에 사용되는 추가 매개변수는 다음과 같이 urlphase()
메서드를 사용하여 나뉩니다.
from requests.compat import urlparse
url_01 = (
"https://docs.python.org/3/library/__main__.html?highlight=python%20hello%20world"
)
url_02 = "https://docs.python.org/2/py-modindex.html#cap-f"
print(urlparse(url_01))
print(urlparse(url_02))
출력:
ParseResult(scheme='https', netloc='docs.python.org', path='/3/library/__main__.html', params='', query='highlight=python%20hello%20world', fragment='')
ParseResult(scheme='https', netloc='docs.python.org', path='/2/py-modindex.html', params='', query='', fragment='cap-f')
urljoin()
을 사용하여 URL 형성
urllib.parse에서 가져온 urljoin() 메서드의 동작을 이해하기 위한 여러 부분의 URL 구성을 아래 예제에서 보여주고 설명합니다.
예제 코드:
>>> from urllib.parse import urljoin
>>> urljoin('test', 'task')
출력:
'task'
예제 코드:
>>> from urllib.parse import urljoin
>>> urljoin('http://test', 'task')
출력:
'http://test/task'
예제 코드:
>>> from urllib.parse import urljoin
>>> urljoin('http://test/add', 'task')
출력:
'http://test/task'
예제 코드:
>>> from urllib.parse import urljoin
>>> urljoin('http://test/add/', 'task')
출력:
'http://test/add/task'
예제 코드:
>>> from urllib.parse import urljoin
>>> urljoin('http://test/add/', '/task')
출력:
'http://test/task'
예제 코드:
>>> from urllib.parse import urljoin
>>> urljoin('test', 'task')
출력:
'task'
위 스니펫에서 첫 번째 인수는 브라우저에 표시되는 페이지와 동일할 수 있는 baseurl
(urljoin()
구문 가정)으로 간주될 수 있습니다.
두 번째 인수 newurl
은 해당 페이지에서 앵커의 href
로 간주할 수 있습니다. 결과적으로 최종 URL은 사용자가 클릭하면 페이지로 연결됩니다.
위의 스니펫을 고려할 때 baseurl
에 체계와 도메인이 포함되어 있다고 생각할 수도 있습니다.
예제 코드:
>>> from urllib.parse import urljoin
>>> urljoin('http://test', 'task')
출력:
'http://test/task'
링크는 가상 호스팅 측면과 <a href='task'>Baz</a>
와 같은 앵커를 고려할 때 위 스니펫의 URL로 사용자를 안내할 수 있습니다.
>>> from urllib.parse import urljoin
>>> urljoin('http://test/add', 'task')
출력:
'http://test/task'
위와 같이 test/add
부분을 추가하면 사용자를 위의 URL로 안내하는 task
에 대한 상대 링크가 생성됩니다.
>>> from urllib.parse import urljoin
>>> urljoin('http://test/add/', 'task')
출력:
'http://test/add/task'
여기에 test/add/
가 추가되어 다른 관련 링크인 test/add/task
로 연결됩니다.
>>> from urllib.parse import urljoin
>>> urljoin('http://test/add/', '/task')
출력:
'http://test/task'
사용자가 test/add/
에 있고 href
가 /task
인 경우 사용자를 test/task
에 연결합니다. 따라서 Python의 urljoin()
은 필요에 따라 URL을 해결하는 데 도움이 되는 편리한 함수라고 말할 수 있습니다.
Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.