728x90
from urllib.parse import urlsplit, quote
필요한 라이브러리를 받아옵니다.
https://cokes.tistory.com/manage/newpost/코크는 개발자
이렇게 한글이나 공백이 있는 경우 인코딩을 해주어야합니다.
def quote(string, safe='/', encoding=None, errors=None):
if isinstance(string, str):
if not string:
return string
if encoding is None:
encoding = 'utf-8'
if errors is None:
errors = 'strict'
string = string.encode(encoding, errors)
else:
if encoding is not None:
raise TypeError("quote() doesn't support 'encoding' for bytes")
if errors is not None:
raise TypeError("quote() doesn't support 'errors' for bytes")
return quote_from_bytes(string, safe)
quote 함수를 보자면 utf-8로 인코딩을 해서 반환해줍니다.
하지만 전체 url를 인코딩 해버리면 https:// 에 ' : ' 를 인코딩해버려서 url로 인식을 하지 못하게 됩니다.
url = 'https://cokes.tistory.com/manage/newpost/코크는 개발자'
# 이 url를 urlsplit()으로 나누어보면
urlsplit(url)
#(scheme="https", netloc="cokes.tistory.com", path="/mange/newpost/코크는 개발자")
이런 결과가 나옵니다.
그래서 우리는 path 부분만 quote 함수를 사용해서 인코딩 할 것 입니다.
url_split = urlsplit(url)
url = url_split.scheme + "://" + url_split.netloc + quote(url_split.path)
이렇게 path 부분만 인코딩해서 새로운 url을 뽑아내면 됩니다.
query 파라미터만 뽑아내는 방법도 있습니다.
728x90
'파이썬' 카테고리의 다른 글
파이썬 sqlite row_factory로 fetchall() 리스트로 받기 (0) | 2022.09.20 |
---|---|
파이썬 셀레니움 와이어 No such file or directory - seleniumwire\\ca.crt' (0) | 2022.07.14 |
파이썬 이메일 SMTP 사용 방법 (0) | 2022.05.26 |
파이썬 BeautifulSoup 사용해서 하위태그 지우기 (0) | 2021.12.21 |
파이썬 정규 표현식 사용해서 태그 사이 문자를 지워보자 (0) | 2021.11.04 |