我正在尝试使用python更改url中的主机名,并且一直在使用urlparse模块一段时间,但找不到令人满意的解决方案。例如,考虑URL:
https://www.google.dk:80/barbaz
我想将“ www.google.dk”替换为“ www.foo.dk”,因此得到以下网址:
https://www.foo.dk:80/barbaz。
因此,我要替换的部分是urlparse.urlsplit所指的主机名。我曾希望urlsplit的结果能让我进行更改,但是结果类型ParseResult不允许我这样做。如果没有其他办法,我当然可以通过将所有部分与+附加在一起来重新构造新的url,但这会给我留下一些非常丑陋的代码,并带有很多条件,以便在正确的位置获取“://”和“:”
。
您可以使用urllib.parse.urlparse
函数和ParseResult._replace
方法(Python
3):
>>> import urllib.parse
>>> parsed = urllib.parse.urlparse("https://www.google.dk:80/barbaz")
>>> replaced = parsed._replace(netloc="www.foo.dk:80")
>>> print(replaced)
ParseResult(scheme='https', netloc='www.foo.dk:80', path='/barbaz', params='', query='', fragment='')
如果您使用的是Python 2,请替换urllib.parse
为urlparse
。
ParseResult
是的子类,namedtuple
并且_replace
是以下namedtuple
方法:
返回命名元组的新实例,用新值替换指定字段
更新 :
正如@ 2rs2ts在注释netloc
属性中所说的,包括端口号。
好消息:ParseResult
具有hostname
和port
属性。坏消息:hostname
和port
不的成员namedtuple
,他们的动态特性,你不能这样做parsed._replace(hostname="www.foo.dk")
。它将引发异常。
如果您不想拆分,:
并且您的网址始终有一个端口号,却没有,username
并且password
(例如“ https://
username:password@www.google.dk:80 /
barbaz
之类的网址”),您可以这样做:
parsed._replace(netloc="{}:{}".format(parsed.hostname, parsed.port))
我们有MySQL服务器及其复制运行在另一台机器上。主从机都运行在MySQL5.6上,现在的计划是更新主从机的IP。我们计划在复制中使用下面的查询。 请确认一下上述方法是否正确,是否有足够的信息,以便在主主机ip更新的情况下进行复制。 提前道谢。
有没有办法通过在容器的命令行中发送命令来重命名lxc容器主机名?我知道您可以执行类似于的操作,然后使用()重命名配置中的主机名和路径。 但是,我可以不离开容器的控制台,然后在主控制台中键入内容来完成它吗?
问题内容: 我正在尝试制作一个可以更改PC /笔记本电脑IP地址和子网掩码的程序。我要输入的内容与Windows(ip / subnet,dns / alternate dns)上IPv4属性的接口相似。 我现在可以想到的是使用netsh命令更改Windows ip。我想做的是在Windows上设置/获取以太网设置 提前致谢 问题答案: 您可以在JAVA中更改注册表,这应该可以解决问题。这些应该有
当来自后台服务和移动屏幕的API调用关闭时。出现以下错误。 java.net.无法解析主机:没有与主机名相关联的地址W/System.err:在java.net.InetAddress.lookupHostByName(InetAddress.java:424)在java.net.InetAddress.getAllByNameImpl(InetAddress.java:236)在java.net
问题内容: 任何人都知道,如果使用jquery或通用javascript,我可以在http ajax调用中从标头更改引荐来源网址? 基本上,我希望它是从我的页面发送的,但是从另一个页面有一个引荐来源网址。任何信息都很好。 问题答案: 浏览器将始终为我完成的测试覆盖引荐来源网址。这意味着您不能更改ajax调用的引用者。
问题内容: 我的主机文件(C:\ WINDOWS \ system32 \ drivers \ etc \ hosts)具有一堆IP地址到主机名的映射: 我正在尝试找到一种通过Java API以编程方式从IPAddress转换为HostName的方法。 伪代码: 问题答案: 我从这里尝试了代码,它可以工作。即: