urllib.Parse를 사용하여 URL의 검색 문자열을 동적으로 재구성
8465 단어 Python
하고 싶은 일 https://github.com/search?q=rails&type=Repositories
이러한 URL을 기반으로https://github.com/search?q=numpy&type=Repositories&l=C
이러한 URL을 생성하고 싶습니다.구체적으로 조회 파라미터의 값q
이 바뀌었고 파라미터l=C
가 추가되었다.
메서드
이루어지다
import urllib.parse
def update_query_parameters(url, query_parameters):
result = urllib.parse.urlparse(url)
params = urllib.parse.parse_qs(result.query)
params.update(query_parameters)
new_query = urllib.parse.urlencode(params, doseq=True)
result = result._replace(query=new_query)
return urllib.parse.urlunparse(result)
>>> url = 'https://github.com/search?q=rails&type=Repositories'
>>> update_query_parameters(url, {'q': 'numpy', 'l': 'C' })
'https://github.com/search?q=numpy&type=Repositories&l=C'
디테일
>>> import urllib.parse
>>> result = urllib.parse.urlparse('https://github.com/search?q=rails&type=Repositories')
>>> result
ParseResult(scheme='https', netloc='github.com', path='/search', params='', query='q=rails&type=Repositories', fragment='')
>>> params = urllib.parse.parse_qs(result.query)
>>> params
{'q': ['rails'], 'type': ['Repositories']}
>>> params.update({'q': 'numpy', 'l': 'C' })
>>> params
{'q': 'numpy', 'type': ['Repositories'], 'l': 'C'}
>>> new_query = urllib.parse.urlencode(params, doseq=True)
>>> new_query
'q=numpy&type=Repositories&l=C'
>>> # ParseResult オブジェクトでは somenamedtuple._replace(**kwargs) が使える。
... result = result._replace(query=new_query)
>>> result
ParseResult(scheme='https', netloc='github.com', path='/search', params='', query='q=numpy&type=Repositories&l=C', fragment='')
>>> urllib.parse.urlunparse(result)
'https://github.com/search?q=numpy&type=Repositories&l=C'
응, 좀 복잡한데
참고 자료
이루어지다
import urllib.parse
def update_query_parameters(url, query_parameters):
result = urllib.parse.urlparse(url)
params = urllib.parse.parse_qs(result.query)
params.update(query_parameters)
new_query = urllib.parse.urlencode(params, doseq=True)
result = result._replace(query=new_query)
return urllib.parse.urlunparse(result)
>>> url = 'https://github.com/search?q=rails&type=Repositories'
>>> update_query_parameters(url, {'q': 'numpy', 'l': 'C' })
'https://github.com/search?q=numpy&type=Repositories&l=C'
디테일
>>> import urllib.parse
>>> result = urllib.parse.urlparse('https://github.com/search?q=rails&type=Repositories')
>>> result
ParseResult(scheme='https', netloc='github.com', path='/search', params='', query='q=rails&type=Repositories', fragment='')
>>> params = urllib.parse.parse_qs(result.query)
>>> params
{'q': ['rails'], 'type': ['Repositories']}
>>> params.update({'q': 'numpy', 'l': 'C' })
>>> params
{'q': 'numpy', 'type': ['Repositories'], 'l': 'C'}
>>> new_query = urllib.parse.urlencode(params, doseq=True)
>>> new_query
'q=numpy&type=Repositories&l=C'
>>> # ParseResult オブジェクトでは somenamedtuple._replace(**kwargs) が使える。
... result = result._replace(query=new_query)
>>> result
ParseResult(scheme='https', netloc='github.com', path='/search', params='', query='q=numpy&type=Repositories&l=C', fragment='')
>>> urllib.parse.urlunparse(result)
'https://github.com/search?q=numpy&type=Repositories&l=C'
응, 좀 복잡한데참고 자료
Reference
이 문제에 관하여(urllib.Parse를 사용하여 URL의 검색 문자열을 동적으로 재구성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/QUANON/items/063bc46a1b9f584f366a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)