我想更改 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)

慕妹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'
添加回答
舉報
0/150
提交
取消