Developer/Python
Python urllib.parse - url parameter parsing, uri 다루기
roqkfrlfhr
2021. 1. 9. 18:44
Python urllib.parse - url parameter parsing, url 다루기
Python에서 uri을 다루는 방법과 parameter 값을 가지고 오는 방법을 알려드리도록 하겠습니다.
UTM 값을 얻어내는 등 여러곳에 많이 유용하게 사용될 함수라 정리하려고 합니다.
from urllib.parse import urlparse, parse_qs
uri = "https://jsikim1.tistory.com/category/Developer?param1=value1¶m2=value2#id1"
parse_result = urlparse(uri)
print(parse_result)
# 출력
# ParseResult(scheme='https', netloc='jsikim1.tistory.com', path='/category/Developer', params='', query='param1=value1¶m2=value2', fragment='id1')
위와 같이 urllib.parse.urlparse 를 사용하여 uri를 ParseResult 객체로 가져올 수 있습니다.
from urllib.parse import urlparse, parse_qs
uri = "https://jsikim1.tistory.com/category/Developer?param1=value1¶m2=value2#id1"
parse_result = urlparse(uri)
# print(parse_result)
print(parse_result.scheme) # https
print(parse_result.netloc) # jsikim1.tistory.com
print(parse_result.path) # /category/Developer
print(parse_result.query) # param1=value1¶m2=value2
print(parse_result.fragment) # id1
ParseResult 객체의 각 값들을 위와같이 가져올 수 있습니다.
from urllib.parse import urlparse, parse_qs
uri = "https://jsikim1.tistory.com/category/Developer?param1=value1¶m2=value2#id1"
parse_result = urlparse(uri)
params = parse_qs(parse_result.query)
print(params)
# 출력
# {'param1': ['value1'], 'param2': ['value2']}
urllib.parse.parse_qs() 에 ParseResult 객체의 query 값을 넣어 사용하여 위와같이 파싱한 값을 구할 수 있습니다.
※ 주의할 점
from urllib.parse import urlparse, parse_qs
uri = "https://jsikim1.tistory.com/category/Developer?param1=value1¶m2=value2¶m2=value3#id1"
parse_result = urlparse(uri)
params = parse_qs(parse_result.query)
print(params)
# 출력
# {'param1': ['value1'], 'param2': ['value2', 'value3']}
위와 같이 키값이 같은 Parameter가 있으면 하나의 키에 값으로 리스트 안에 두개의 값이 들어갑니다.
도움이 되셨다면 공감, 댓글 부탁드립니다!
궁금하신 점이나 요청사항은 언제든지 말씀해주세요!
피드백도 언제나 환영입니다!
감사합니다.