

众所周知,影刀的主要战场是电商,而在电商领域中,亚马逊 Amazon 又是非常重要的一块。
做亚马逊市场大盘分析时,经常会用到 ABA(Amazon Brand Analytics)相关数据。
亚马逊官方提供的 ABA 数据,很多都是以周为维度。数据量虽然很大,但在一些市场变化比较快的类目中,短期数据确实具有一定的分析价值。
但是,如果遇到窗帘、袜子、汽车轮胎等头部品牌高度集中的细分类目,短期的市场变化意义可能没有那么明显。
这时候,如果能够把数据维度从“周”拉长到“月”,反而更方便分析整个市场的变化趋势。
于是问题就来了。
我发现,对于跨境电商来说,国外的网站反而比较“规矩”。
像亚马逊、eBay,网页结构通常比较标准,使用影刀自带的网页元素或者日期选择器,很多时候都可以直接处理。
反而是国内的一些电商工具,比如领星、店小秘等,为了实现各种复杂的交互,网页元素结构经常做得比较复杂。
最近在处理领星 ABA 月份选择的时候,就遇到了这么一个问题。

乍一看,这个日期选择框是不是非常普通?正常情况下,直接使用影刀的通用日期选择器就应该可以解决。
但实际测试下来,智能日期是选择不到的,自己手写呢,可以实现,但是速度慢,效果还不好。
经常各种尝试,最终总结出了一个比较通用的 JS 方案。
而且这个方法并不局限于领星,只要网页中的日期组件可以通过 DOM 定位,并且能够通过 JS 模拟点击,就可以使用类似的思路。
第一步非常重要。
在浏览器开发者工具中找到日期选择器对应的 DOM,然后复制元素。
这里不要只复制某一个日期按钮,尽量把整个日期组件的父级结构完整复制出来。

什么一定要完整?
因为后面需要让 AI 根据 DOM 结构判断:
哪一部分是年份选择
哪一部分是月份选择
当前年份在哪里
点击哪个元素可以打开年份面板
点击哪个元素可以打开月份面板
DOM 越完整,AI 越容易判断。
借助AI的力量,这里我总结了一套对于影刀的通用提示词,放在文章最后。AI给我输出的代码是:
function (element, input) {
// input 格式 "2025-12"
const [targetYear, targetMonth] = input.split('-').map(Number);
// 1. 打开年份面板(el-year-table),选中目标年份
const yearTable = document.querySelector('.el-year-table');
if (yearTable && yearTable.style.display !== 'table') {
// 点击当前年份,唤起年份选择面板
const yearCell = document.querySelector('.el-date-picker__header .el-picker-panel__header span');
if(yearCell) yearCell.click();
}
// 点击目标年份
const yearItem = Array.from(document.querySelectorAll('.el-year-table .cell')).find(el => el.textContent.trim() === String(targetYear));
if (yearItem) yearItem.click();
// 2. 打开月份面板(el-month-table),选中目标月份
setTimeout(()=>{
// 点击月份唤起月选择面板
const monthHeader = document.querySelector('.el-date-picker__header span');
if(monthHeader) monthHeader.click();
// 月份文本:1月、2月...12月
const monthText = `${targetMonth}月`;
const monthItem = Array.from(document.querySelectorAll('.el-month-table .cell')).find(el => el.textContent.trim() === monthText);
if (monthItem) monthItem.click();
},200);
return null;
}
备注:有没有发现,AI生成的提示词是符合影刀的JS规则的,可以直接用
效果展示:

大坑:这个提示词适合任何的日期界面,包括iframe界面。但是需要注意的是,一定一定把DOM给全了,要不失败的可能性很大
对于一些结构复杂、影刀控件难以识别的网页元素,这种方法其实非常实用。
最后附上我自己目前总结的一个通用提示词:
使用影刀的“执行 JavaScript”功能,根据我提供的完整 DOM 结构,编写一个可以直接运行的 JavaScript 函数。
函数格式必须为:
function (element, input) { ... return null; }
element可以为空,input是我传入的字符串参数。我的需求是:传入
YYYY-MM格式的年月,例如2025-12,通过 JavaScript 模拟用户真实点击操作,在网页日期选择器中选择对应的年份和月份。不要直接修改 input、value 或其他 DOM 属性来伪造结果,必须模拟真实的点击操作,让网页原有的前端事件和状态正常执行。
请根据我提供的完整 DOM 结构,自动分析年份选择器、月份选择器、标题区域以及对应的可点击元素,并生成可以直接复制到影刀中执行的代码。
如果年份和月份需要分两步选择,请自动增加必要的等待时间,确保前一步操作完成后再执行下一步。
以下是网页日期组件的完整 DOM:
</div></td><td class="available"><div> 1 </div></td><td class="available"><div> 2 </div></td><td class="available"><div> 3 </div></td><td class="available"><div> 4 </div></td><td class="available"><div> 5 </div></td><td class="available"><div> 6 </div></td></tr><tr class="el-date-table__row"><td class="available"><div> 7 </div></td><td class="available"><div> 8 </div></td><td class="available"><div> 9 </div></td><td class="available"><div> 10 </div></td><td class="available"><div> 11 </div></td><td class="available"><div> 12 </div></td><td class="available"><div> 13 </div></td></tr><tr class="el-date-table__row"><td class="available"><div> 14 </div></td><td class="available"><div> 15 </div></td><td class="available"><div> 16 </div></td><td class="available"><div> 17 </div></td><td class="available"><div> 18 </div></td><td class="available"><div> 19 </div></td><td class="available"><div> 20 </div></td></tr><tr class="el-date-table__row"><td class="available"><div> 21 </div></td><td class="available"><div> 22 </div></td><td class="available"><div> 23 </div></td><td class="available"><div> 24 </div></td><td class="available"><div> 25 </div></td><td class="available"><div> 26 </div></td><td class="available"><div> 27 </div></td></tr><tr class="el-date-table__row"><td class="available"><div> 28 </div></td><td class="available"><div> 29 </div></td><td class="available"><div> 30 </div></td><td class="available"><div> 31 </div></td><td class="next-month"><div> 1 </div></td><td class="next-month"><div> 2 </div></td><td class="next-month"><div> 3 </div></td></tr><tr class="el-date-table__row"><td class="next-month"><div> 4 </div></td><td class="next-month"><div> 5 </div></td><td class="next-month"><div> 6 </div></td><td class="next-month"><div> 7 </div></td><td class="next-month"><div> 8 </div></td><td class="next-month"><div> 9 </div></td><td class="next-month"><div> 10 </div></td></tr></tbody></table><table class="el-year-table" style="display: none;"><tbody><tr><td class="available">2020</td><td class="available">2021</td><td class="available">2022</td><td class="available">2023</td></tr><tr><td class="available">2024</td><td class="available current">2025</td><td class="available today">2026</td><td class="available">2027</td></tr><tr><td class="available">2028</td><td class="available">2029</td><td></td><td></td></tr></tbody></table><table cellspacing="0" cellpadding="0" class="el-month-table" style=""><tbody><tr><td class=""><div>1 月</div></td><td class=""><div>2 月</div></td><td class=""><div>3 月</div></td></tr><tr><td class=""><div>4 月</div></td><td class=""><div>5 月</div></td><td class=""><div>6 月</div></td></tr><tr><td class=""><div>7 月</div></td><td class=""><div>8 月</div></td><td class=""><div>9 月</div></td></tr><tr><td class=""><div>10 月</div></td><td class=""><div>11 月</div></td><td class="current"><div>12 月</div></td></tr></tbody></table></div></div></div><div class="el-picker-panel__footer" style="display: none;"><button type="button" class="el-button el-picker-panel__link-btn el-button--text el-button--mini is-round"> 此刻 </button><button type="button" class="el-button el-picker-panel__link-btn el-button--default el-button--mini is-plain is-round"> 确定 </button></div></div>
这是领星的一个月份选择框,我需要用 js 选择年月 我给你传入 2025-12 你给我选择对应的年月,
下边是使用影刀调用 js 的函数规则,其中 element 可以为空,input 为我传入的信息,模拟 JS 操作,而不是直接改变值,那样会无意义
function (element, input) {
// 在此处编写您的 Javascript 代码 //element 表示选择的操作目标 (HTML 元素) //input 表示输入的参数 (字符串) return null;
}其中前3行是根据业务场景自行修改,之后的语句不用对,任何AI都可以
