当前位置: 首页 > 面试题库 >

Python:与urljoin的混淆

朱伯寅
2023-03-14
问题内容

我试图从不同的部分组成URL,并且在理解此方法的行为时遇到了麻烦。例如:

Python 3.x

from urllib.parse import urljoin

>>> urljoin('some', 'thing')
'thing'
>>> urljoin('http://some', 'thing')
'http://some/thing'
>>> urljoin('http://some/more', 'thing')
'http://some/thing'
>>> urljoin('http://some/more/', 'thing') # just a tad / after 'more'
'http://some/more/thing'
urljoin('http://some/more/', '/thing')
'http://some/thing'

您能否解释这种方法的确切行为?


问题答案:

(对我而言)最好的方式是第一个参数,base就像您在浏览器中所在的页面一样。第二个参数url是该页面上锚点的href。结果是您单击后将定向到的最终URL。

>>> urljoin('some', 'thing')
'thing'

根据我的描述,这很有意义。尽管希望基础包括一个方案和领域。

>>> urljoin('http://some', 'thing')
'http://some/thing'

如果您在某个虚拟主机上,并且有一个类似的锚,<a href='thing'>Foo</a>则该链接会将您带到http://some/thing

>>> urljoin('http://some/more', 'thing')
'http://some/thing'

我们在some/more这里,所以的相对链接thing会将我们带到/some/thing

>>> urljoin('http://some/more/', 'thing') # just a tad / after 'more'
'http://some/more/thing'

在这里,我们不在some/more,我们在some/more/哪个不同。现在,我们的相对链接将使我们能够some/more/thing

>>> urljoin('http://some/more/', '/thing')
'http://some/thing'

最后。如果打开some/more/并且href为/thing,则将链接到some/thing



 类似资料:
  • 我有PHP(以及其他一些东西)的背景,我正在玩Python。在PHP中,当我想包含另一个文件时,我只需执行或,该文件中的所有内容都包含在内。 但是在python中,推荐的方法似乎是从文件导入,但这似乎更适合包含库和东西?如何在多个文件中分离代码?唯一的方法是使用一个包含一大堆函数调用的文件,然后导入15个其他文件吗?

  • 问题内容: 我正在尝试使用 “ python get_timestamp.py -f gsham_input.xvg -1 -0.1348 -2 -0.1109” 运行以下python 。但是,似乎python错误地将小数点前的减号加了破折号,并显示了以下错误:“ file” get_timestamp.py“,第21行,在value1 = float(arg)ValueError中:float(

  • 问题内容: 我真的很困惑。我已经尝试过使用tomcat的Jax-rs并使用所有能够使用调用我的服务的注释。因此,没有Jax- rs,我可以简单地拥有一个servlet并调用我的服务。同样,正如我尝试过的那样,有jax-rs和jersey(我研究了的实现)以及web.xml中的以下内容。 然后,我在GET上具有与JAX-RS相同的注释,可以使用正确的URL调用我的服务。 我的问题是,为什么球衣使用s

  • 问题内容: 查询: 给出从1到9的数字。 另一个查询: 输出:1 我在诸如经理/员工的分层数据中使用了CONNECT BY。但是我无法解释以上两个查询的结果。 编辑: 我不试图实现任何特殊的查询#2。我只想知道oracle如何解释查询。由于使用CONNECT BY,是否有任何部分充当父母和孩子?为什么结果为1?幕后发生了什么? 问题答案: 如何被执行的查询和评估-步步(通过实施例)。 假设我们有下

  • 问题内容: 我是使用属性的新手,因此我进行了如下所示的简单测试。在测试中,我创建了两个类“ Test1”和“ Test2”,每个类都持有一个值。我正在尝试使用属性来控制对伪隐藏的“ val”属性的访问。当前测试不限制“ val”属性的任何输入或输出,因为该程序仅是概念证明。下面显示的两个测试类产生相同的结果,并被认为代表了构造属性的不同方法。我要引用的属性的示例使用在python docs上找到。

  • 来自topcoder的一篇文章: “在BFS中,我们在将顶点推入队列时标记访问的顶点,而不是在DFS中弹出顶点时标记访问的顶点。” 注意:这是在使用显式堆栈(伪dfs)实现dfs时说的。 我的问题是为什么会这样?为什么我们不能在从队列弹出后标记访问的顶点,而在bfs的情况下推到队列上?