📜  从深层链接获取 id (1)

📅  最后修改于: 2023-12-03 15:22:00.878000             🧑  作者: Mango

从深层链接获取 id

当你在Web开发中需要从深层链接中获取id时,你可以通过正则表达式或者现成的工具来完成。下面介绍两种常用的方法。

1. 正则表达式

一般情况下,深层链接中的id是以某种规律出现的,可以通过正则表达式来匹配。以以下链接为例:

https://example.com/posts/123

我们需要获取链接中的id 123。可以通过如下正则表达式来实现:

import re

link = "https://example.com/posts/123"
pattern = r"/(\d+)$"
match = re.search(pattern, link)
if match:
    print(match.group(1)) # 输出 123

上面的正则表达式中,/(\d+)$ 表示匹配以 / 开头,后跟任意个数字,并以末尾结尾的字符串。(\d+) 表示将匹配到的数字作为捕获组,可以在 match 中通过 group(1) 获取到。

2. urlparse

Python 自带的 urlparse 模块可以将一个链接拆分为协议、域名、路径等不同的部分。我们可以通过这些部分来获取id。以以下链接为例:

https://example.com/posts/123/edit?lang=en#top

我们需要获取链接中的id 123。可以通过如下代码来实现:

from urllib.parse import urlparse, parse_qs

link = "https://example.com/posts/123/edit?lang=en#top"
parsed_url = urlparse(link)
query = parse_qs(parsed_url.query)
print(query.get('id', [''])[0]) # 输出 123

解释一下上面的代码:

  • urlparse 函数会将链接拆分为协议、域名、路径等部分的元组。我们通过 parsed_url.path 获取路径部分 /posts/123/edit
  • parse_qs 函数会将查询参数部分解析为字典,例如 { "lang": ["en"] }。由于查询字符串的key可能不唯一,所以返回的是列表。我们将id部分的列表取第一个元素,就得到了 123

注意:当链接中没有查询参数时,query 会返回一个空字典。为了避免 query.get('id', [''])[0] 报错,需要给 get 函数传递一个默认值。这里我们传递了一个空字符串,然后取第一个字符。如果查询参数中有多个id,也可以使用 query.get('id', [''])[0] 来获取第一个元素。

以上就是从深层链接中获取id的两种方法。可以根据实际情况,选择其中更加方便和高效的方法来实现。