解析URL路径时python和ruby之间的不同,哪个有效?

我有一个 URL 字符串:

url = "https://foo.bar.com/path/to/aaa.bbb/ccc.ddd;dc_trk_aid=486652617;tfua=;gdpr=;gdpr_consent=?&339286293"

使用 Python 时

url = "https://foo.bar.com/path/to/aaa.bbb/ccc.ddd;dc_trk_aid=486652617;tfua=;gdpr=;gdpr_consent=?&339286293"

使用红宝石时

from urllib.parse import urlparse

url_obj = urlparse(url)
url_obj.path  # `path/to/aaa.bbb/ccc.ddd`

我猜python考虑;不是url路径的一部分,哪个是“正确的”?

回答

urlparsepath第一个分号后的部分为params

url_obj.path   # '/path/to/aaa.bbb/ccc.ddd'
url_obj.params # 'dc_trk_aid=486652617;tfua=;gdpr=;gdpr_consent='

要复制 Ruby 的行为,请urlsplit改用:

这类似于urlparse(),但不会从 URL 中分离参数。urlparse()如果需要更新的 URL 语法,允许将参数应用于URL路径部分的每个段(请参阅 RFC 2396),通常应该使用它来代替。

from urllib.parse import urlsplit

url_obj = urlsplit(url)
url_obj.path  # '/path/to/aaa.bbb/ccc.ddd;dc_trk_aid=486652617;tfua=;gdpr=;gdpr_consent='


以上是解析URL路径时python和ruby之间的不同,哪个有效?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>