为了账号安全,请及时绑定邮箱和手机立即绑定

使用 urllib 更改 URL 的主机名

使用 urllib 更改 URL 的主机名

拉风的咖菲猫 2023-12-26 16:10:49
我想更改 URL 的主机名。>>> import urllib>>> url = "https://foo.bar.com:9300/hello">>> parsed = urllib.parse.urlparse(url)>>> parsedParseResult(scheme='https', netloc='foo.bar.com:9300', path='/hello', params='', query='', fragment='')因为parsed是namedtuple,所以scheme可以替换:>>> parsed_replaced = parsed._replace(scheme='http')>>> urllib.parse.urlunparse(parsed_replaced)'http://foo.bar.com:9300/hello'该parsed对象还有一个主机名属性:>>> parsed.hostname'foo.bar.com'但它不是namedtuple中的字段之一,所以不能像scheme那样被替换。有没有办法只替换 URL 中的主机名?
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

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)


查看完整回答
反对 回复 2023-12-26
?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您正在寻找netloc


url = 'https://foo.bar.com:9300/hello'

parsed = urllib.parse.urlparse(url)

parsed_replaced = parsed._replace(netloc='spam.eggs.com:9300')


urllib.parse.urlunparse(parsed_replaced)

'https://spam.eggs.com:9300/hello'


查看完整回答
反对 回复 2023-12-26
  • 2 回答
  • 0 关注
  • 125 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信