前言 在演出票务业务场景,关键词联想词是做搜索推荐、类目词库搭建、用户搜索行为分析的基础数据源。网上多数示例仅简单演示单次请求获取关键词,缺少生产环境下的词表去重、无效词过滤、接口频率控制逻辑。本文基于大麦网关键词联想列表接口,封装一套带词库清洗、限流保护的调用示例,解决批量拉取候选关键词时重复词、广告词、空词污染本地词库的问题。 前置准备 调用前需要准备基础请求头参数,接口会校验 UA 与请求来源,缺少基础 header 会直接返回空数据。需要安装 requests 库用于网络请求。 pip install requests 完整代码示例 代码逻辑解析 代码采用会话复用 Session,复用连接减少握手开销。核心分为三层:请求层、数据过滤层、词库存储层。 请求层:封装 GET 请求,携带平台校验必需的请求头,设置超时时间避免长时间阻塞。 过滤层:过滤长度小于 2 的无效词,去除前后空格,利用集合自动去重,避免同一关键词重复入库。 批量调度层:设置请求间隔,控制 QPS,短时间高频请求容易触发访问限制。 线上对接避坑要点 接口返回联想词存在时效性,热门演出关键词会随档期动态更新,词库建议定时增量更新,不要全量反复拉取。 种子词选择会直接影响结果,短词、生僻词大概率返回空列表,优先使用类目基础词作为种子词。 不要并发大量请求,该接口有访问风控,并发过高会临时限制 IP 访问。 联想关键词仅作为业务词库参考,不可直接用于票务抢购等违规场景,遵循平台接口使用协议。

import requests
import time
class DamaiKeywordCrawler:
def __init__(self):
self.session = requests.Session()
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Referer": "https://www.damai.cn/",
"Accept": "application/json, text/plain, */*"
}
# 存储最终干净关键词集合,自动去重
self.keyword_set = set()
# 限流间隔,防止高频请求
self.request_interval = 0.8
def fetch_suggest_keywords(self, seed_word: str):
"""根据种子词拉取联想关键词列表"""
url = "https://search.damai.cn/searchajax.html"
params = {
"keyword": seed_word,
"action": "suggest"
}
try:
resp = self.session.get(url, headers=self.headers, params=params, timeout=8)
if resp.status_code == 200:
data = resp.json()
raw_list = data.get("result", [])
# 过滤空字符串、长度过短无效词
clean_words = [w.strip() for w in raw_list if len(w.strip()) > 1]
for word in clean_words:
self.keyword_set.add(word)
return clean_words
else:
print(f"请求异常,状态码:{resp.status_code}")
return []
except Exception as e:
print(f"接口请求异常:{str(e)}")
return []
def batch_get_keywords(self, seed_words: list):
"""批量遍历种子词,采集联想关键词"""
for word in seed_words:
res = self.fetch_suggest_keywords(word)
print(f"种子词【{word}】获取联想词:{res}")
time.sleep(self.request_interval)
return list(self.keyword_set)
if __name__ == "__main__":
client = DamaiKeywordCrawler()
seeds = ["演唱会", "话剧", "音乐节"]
final_word_list = client.batch_get_keywords(seeds)
print("清洗后完整关键词词库:", final_word_list)