使用 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是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 中的主机名?


拉风的咖菲猫
浏览 126回答 2
2回答

MM们

import urllib.parseurl = "https://foo.bar.com:9300/hello"parsed = urllib.parse.urlparse(url)hostname = parsed.hostnamenew_hostname = "my.new.hostname"parsed_replaced = parsed._replace(netloc=parsed.netloc.replace(hostname, new_hostname))print(parsed_replaced)

慕妹3242003

您正在寻找netlocurl = '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'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python