urllib.parse divide URLs, interpreta query strings e aplica percent-encoding. urlsplit mantém esquema, autoridade, caminho, consulta e fragmento separados; urlencode produz parâmetros com escape correto.
from urllib.parse import parse_qs, urlencode, urlsplit, urlunsplit
parts = urlsplit("https://example.com/search?q=python&page=2")
query = parse_qs(parts.query)
query["page"] = ["3"]
new_url = urlunsplit(parts._replace(query=urlencode(query, doseq=True)))
print(new_url)
Como usar com segurança
O parser não afirma que uma URL é segura. Para redirecionamentos ou requisições, aceite apenas esquemas esperados, valide o hostname e considere resolução DNS e endereços internos. Ao combinar uma base com entrada externa, lembre que urljoin aceita URLs absolutas.
Para aprofundar a base, consulte guia de collections em Python e guia de type hints.
A documentação oficial do Python, consultada em 22 de julho de 2026, descreve a API, os casos-limite e a compatibilidade entre versões.