python - 使用 urllib 更改 URL 的主机名
问题描述
我想更改 URL 的主机名。
>>> import urllib
>>> url = "https://foo.bar.com:9300/hello"
>>> parsed = urllib.parse.urlparse(url)
>>> parsed
ParseResult(scheme='https', netloc='foo.bar.com:9300', path='/hello', params='', query='', fragment='')
因为parsed
是一个命名元组,所以可以替换方案:
>>> parsed_replaced = parsed._replace(scheme='http')
>>> urllib.parse.urlunparse(parsed_replaced)
'http://foo.bar.com:9300/hello'
该parsed
对象还具有主机名属性:
>>> parsed.hostname
'foo.bar.com'
但它不是namedtuple中的字段之一,所以不能像方案那样替换。
有没有办法只替换 URL 中的主机名?
解决方案
import urllib.parse
url = "https://foo.bar.com:9300/hello"
parsed = urllib.parse.urlparse(url)
hostname = parsed.hostname
new_hostname = "my.new.hostname"
parsed_replaced = parsed._replace(netloc=parsed.netloc.replace(hostname, new_hostname))
print(parsed_replaced)
推荐阅读
- typescript - cordova-plugin-qrscanner: 错误: 没有为 DefaultDecoderFactory(ArrayList) 找到合适的构造函数
, , ) - mikrotik - Mikrotik Wap AC. Unresettable?
- php - 如何在不使用 PHP explode() 的情况下在逗号之后获取
- python - 从 Python 非标准库导入模块
- vb.net - Roslyn context.SemanticModel.GetDeclaredSymbol() 从 InvocationExpression 返回 NULL
- python - Python内部函数中传递变量的区别
- c# - 当 GameObject 移动时,Transform.position 返回 0 0 0
- python - 如何录制内部音频?Python
- python - Python 无法处理带有父目录部分的 Windows 长路径
- r - 按最近日期从一列中对行进行子集