如何按指定顶级域名优先级排序Python获取的谷歌搜索结果
实现方案
核心逻辑为给每个URL匹配对应优先级权重,通过Python内置sorted函数自定义排序key完成排序,后续调整优先级仅需修改优先级列表即可,无需改动排序逻辑。
步骤1:导入依赖模块
用于解析URL提取域名部分:
from urllib.parse import urlparse
步骤2:定义优先级规则并生成映射
# 域名优先级列表,后续调整顺序/新增后缀直接修改此列表即可 domain_priority = [".gov", ".int", ".com", ".edu", ".org", ".info"] # 生成优先级映射:排名越靠前的域名对应权重值越小 priority_map = {suffix: idx for idx, suffix in enumerate(domain_priority)} # 未匹配到优先级后缀的URL统一使用最大权重,排在所有匹配结果之后 max_priority = len(domain_priority)
注:原优先级列表中后缀末尾的斜杠为路径分隔符,提取域名匹配时已自动忽略,不影响匹配结果。
步骤3:定义排序权重计算函数
def cal_sort_weight(url): try: # 提取URL域名并转为小写,避免大小写导致匹配失败 domain = urlparse(url).netloc.lower() for suffix in domain_priority: if domain.endswith(suffix): return priority_map[suffix] return max_priority except: # 无效URL统一排在最后 return max_priority
步骤4:执行排序
对你已存储搜索结果的search_results列表执行排序:
sorted_search_results = sorted(search_results, key=cal_sort_weight)
内容的提问来源于stack exchange,提问作者kramboll
相关产品推荐
相关产品推荐

