Python 使用urllib更改URL的主机名

Python 使用urllib更改URL的主机名,python,python-3.x,url,urllib,urlparse,Python,Python 3.x,Url,Urllib,Urlparse,我想更改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

我想更改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_replaced = parsed._replace(scheme='http')

>>> urllib.parse.urlunparse(parsed_replaced)
'http://foo.bar.com:9300/hello'
解析的
对象也有一个主机名属性:

>>> parsed.hostname
'foo.bar.com'
但它不是namedtuple中的字段之一,因此不能像scheme那样替换它


有没有办法只替换URL中的主机名?

您正在查找的
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'

您正在查找
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'
import urllib.parse
url=”https://foo.bar.com:9300/hello"
parsed=urllib.parse.urlparse(url)
hostname=parsed.hostname
new\u hostname=“my.new.hostname”
parsed_replaced=parsed._replace(netloc=parsed.netloc.replace(主机名,新主机名))
打印(已解析或已替换)
导入urllib.parse
url=”https://foo.bar.com:9300/hello"
parsed=urllib.parse.urlparse(url)
hostname=parsed.hostname
new\u hostname=“my.new.hostname”
parsed_replaced=parsed._replace(netloc=parsed.netloc.replace(主机名,新主机名))
打印(已解析或已替换)