Python中如何解析和生成URL后缀的规则?

https://chengyu.911cha.com/dWQy.html
https://chengyu.911cha.com/NTZv.html
https://chengyu.911cha.com/M2dnYQ==.html

其中 dWQy、NTZv、M2dnYQ==是什么规则生成的呢?
base64decode 后的值也看不出来。
Python中如何解析和生成URL后缀的规则?


6 回复

在Python里处理URL后缀(路径参数、查询字符串等),主要用urllib.parse模块。解析时用urlparse()拆分URL,生成时用urlunparse()或手动拼接。

解析示例:

from urllib.parse import urlparse, parse_qs

url = "https://example.com/path/to/page?name=John&age=30#section"
parsed = urlparse(url)

print(f"Path: {parsed.path}")  # /path/to/page
print(f"Query: {parsed.query}")  # name=John&age=30
print(f"Fragment: {parsed.fragment}")  # section

# 解析查询参数为字典
params = parse_qs(parsed.query)
print(f"Params: {params}")  # {'name': ['John'], 'age': ['30']}

生成示例:

from urllib.parse import urlunparse, urlencode

# 方法1:用urlunparse组装
new_url = urlunparse((
    'https',
    'example.com',
    '/new/path',
    '',
    urlencode({'search': 'python', 'page': 2}),
    'footer'
))
print(new_url)  # https://example.com/new/path?search=python&page=2#footer

# 方法2:f-string手动拼接(简单情况)
base = "https://api.example.com/data"
params = {"id": 123, "format": "json"}
query = "&".join(f"{k}={v}" for k, v in params.items())
full_url = f"{base}?{query}"
print(full_url)  # https://api.example.com/data?id=123&format=json

关键点:

  • 解析用urlparse()parse_qs()
  • 生成用urlunparse()urlencode()拼接
  • 注意查询参数值可能是列表(parse_qs返回字典值为列表)

总结:用标准库urllib.parse就够了。

也就是说没办法通过这个 url 找回原始 id 了吧?

应该是数据库里面的一条记录,除非你有数据库,不然找不到相互关系

没有关系,随机的 4 位或者多位字符来做 url 而已,这样子可以让 url 看起来比较短

这个规律肯定是不好找的,或说根本没有规律只是随机生成,和这个成语没有关系,可能是数据库的 id 有对应。
对应关系也许不是用算法或函数,只是用个关系表.

很明显这个网站做了静态化, 全部网页都是生成好的. 一个原因是反爬, 另一个就是提高性能.
你只能按字数分类页, 直接把链接解析出来再爬.

回到顶部