You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用jQuery抓取亚马逊搜索结果价格报.find is not a function错误如何解决

问题原因
  • 你在获取子元素时误用了原生DOM的children属性而非jQuery的children()方法:$('选择器').children返回的是原生HTMLCollection集合,集合内都是原生DOM节点,原生节点没有jQuery的find方法,直接调用就会报错。
  • 选择器语法错误:你要匹配的是类名为a-price的元素,需要加类选择器前缀.,find('a-price')是匹配标签名为a-price的元素,匹配不到对应内容。
  • 普通for循环中this指向全局对象(浏览器环境下为window),而非当前遍历的结果项,$(this).find()自然无法拿到目标元素。
可行解决方案

推荐使用jQuery内置的each方法遍历,语法更简洁,也避免this指向问题:

// 搜索'keyboards'场景下的抓取代码
// 获取jQuery封装的结果项集合
const $resultItems = $('.s-main-slot.s-result-list.s-search-results.sg-row').children();

$resultItems.each(function () {
    // 此处this指向当前遍历的原生商品项节点,包装为jQuery对象后匹配价格元素
    const $price = $(this).find('.a-price');
    // 建议增加非空判断,跳过无价格的商品项
    if ($price.length) {
        console.log($price.text().trim());
    }
});

如果你要保留for循环写法,修正后的代码如下:

const resultItems = $('.s-main-slot.s-result-list.s-search-results.sg-row').children();

for (let i = 0; i < resultItems.length; i++) {
    const $price = $(resultItems[i]).find('.a-price');
    if ($price.length) {
        console.log($price.text().trim());
    }
}

内容的提问来源于stack exchange,提问作者deepfriedchicken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 23:45:04