Python如何从关键词列表随机选取指定数量关键词发起API请求
实现方案
你可以直接用Python标准库random内置的sample()方法完成随机抽取指定数量关键词的需求,仅需对原有代码做少量调整,修改逻辑如下:
- 给
run_bot函数新增一个控制单次抽取关键词数量的参数,可根据需要设置默认值 - 每次进入循环后先从全量关键词列表中随机抽取指定数量的不重复关键词,再遍历发起请求
- 增加简单的参数合法性校验,避免传入的抽取数量超过总关键词数量或小于1时报错
修改后的完整代码如下:
import random import time from itertools import chain # 搜索关键词定义 keywords = ["Televisori", "Notebook", "Tablet", "Apple", "Samsung", "Smartwatch", "Auricolari Bluetooth", "Fotocamera", "Videocamera"] CATEGORY = "和你原有代码里的分类参数保持一致即可" # 新增keyword_count参数,默认每次抽3个关键词,可按需修改默认值或者调用时传参 def run_bot(bot, keywords, keyword_count=3): # 先做参数合法性校验 if not 1 <= keyword_count <= len(keywords): raise ValueError(f"抽取的关键词数量必须在1到{len(keywords)}之间") # 启动循环 while True: try: items_full = [] # 每次循环随机抽取指定数量的不重复关键词 selected_keywords = random.sample(keywords, k=keyword_count) # 仅遍历选中的关键词发起请求 for el in selected_keywords: # 翻页遍历 for i in range(1, 10): items = search_items(el, CATEGORY, item_page=i) # 接口请求间隔限制1秒 time.sleep(1) items_full.append(items) # 拼接所有返回结果 items_full = list(chain(*items_full)) # 原有代码后续逻辑保持不变即可
如果不需要严格保证每次抽取的关键词不重复,也可以把random.sample换成random.choices(keywords, k=keyword_count),该方法允许抽到重复的关键词。
内容的提问来源于stack exchange,提问作者junkfood
相关产品推荐
相关产品推荐

