python - 使用 urllib 更改 URL 的主机名

标签 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='', 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 中的主机名?

最佳答案

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)

关于python - 使用 urllib 更改 URL 的主机名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64489393/

相关文章:

python - 散列 frozenset 与 tuple of sorted

python-3.x - Scrapy 1.6 : DNS lookup failed

python - __main__ 是否保证始终可导入?

python - 如何限制python函数的参数必须是字符串或lambda表达式之类的函数

javascript - 如果 AngularJS $location.path() 改变,做一些事情

javascript - 在 GET 方法中传递 angularJs 中的参数

javascript - 如何使用 Javascript 和正则表达式解析 url?

python - 本地主机服务器拒绝连接

python - pypy 是否支持 cython 扩展?

python - 从 Pandas 数据帧创建 BigQuery 表,无需明确指定架构