如何区分解析亚马逊网站产品搜索结果页HTM代码中广告位( Sponsored)和自然位的产品ASIN及排名

在开发亚马逊产品广告排名插件的时候需要通过页面HTML代码分别找出属于广告位和自然搜索结果的产品ASIN及排名,所以需要找到区分广告位和自然搜索结果的HTML代码属性:

所有搜索结果页的产品不管是广告位还是自然位,都包括在

标签里,每个div标签里都有这个属性:

<div data-asin="B0CW1LTMHB" data-index="11">

data-asin属性为产品ASIN, data-index属性为产品的位置排名。可以用JavaScript脚本获取:

let asin = div.getAttribute('data-asin');
let index = div.getAttribute('data-index')

要获取页面里面所有产品的ASIN和index,可以用下列JavaScript代码获取:

const divs = document.querySelectorAll('div[data-asin]');
    let asinData = [];
    divs.forEach(div => {
        let asin = div.getAttribute('data-asin');
        let index = div.getAttribute('data-index') || '';
        asinData.push({ asin, index });

经对比广告位和自然的div标签内的HTML代码,发现每个广告位商品(出品牌广告位除外)都包括一个sponsored标签,内容如下:

<span class="a-color-base">Sponsored</span>

则可以通过查找这个div的文本内容是否包括Sponsored这个词来判断:

let isSponsored = div.innerText.includes('Sponsored')

最后包括了全部asin及index排名和是否为广告产品的数据的这个代码函数如下:

function extractDataAsin() {
    let asinElements = document.querySelectorAll('div[data-asin]');
    let asinValues = [];
    asinElements.forEach(div => {
        let asin = div.getAttribute('data-asin');
        let index = div.getAttribute('data-index') || '';
        let isSponsored = div.innerText.includes('Sponsored');
        if (asin) {asinValues.push({ asin: asin, index: index,isSponsored:isSponsored })}; //如果asin不等于空值
    });
    console.log('执行了asin提取函数:',asinValues);
    fetch('http://127.0.0.1:5000/json', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json'
        },
        body: JSON.stringify({ asins: asinValues })
    })
    return asinValues;
}

程序运行后会得到类似下面的数据:

{"asin":"B09JYJHKD7","index":"","isSponsored":false},{"asin":"B09HVCYRRS","index":"","isSponsored":false},{"asin":"B09HL9V474","index":"","isSponsored":false},{"asin":"B0BMGYT38K","index":"3","isSponsored":true},{"asin":"B0BMGYWVSH","index":"4","isSponsored":true},

如下截图:
在这里插入图片描述
isSponsored为true的ASIN就是搜索结果广告产品。细心观察有的ASIN的index值为空,发现是还有一种广告类型是:4 stars and above下面的产品,类似这样:
在这里插入图片描述
这种广告位属于轮播图(carousel),几个产品共用一个位置,单独的ASIN是没有index属性。仔细看这个ASIN产品的HTML代码,是类似这样的:
在这里插入图片描述
产品asin在轮播图里的位置是这个属性确定:

aria-posinset=“2”

这里的2就是产品B00W2W4HXU在轮播图里的位置,即第2个。这个aria-posinset在data-asin所在div标签的父级标签

  • 里。
  • 可以通过这样的方法获得父级li里aria-posinset的属性值:

    const asin = 'B0BMGYT38K';
    document.querySelector(`div[data-asin="${asin}"]`).closest('li.a-carousel-card').getAttribute('aria-posinset');
    

    当然,最简单的方法就是看index为空的asin在整个数组里的排名就可以了,前3名是品牌广告,最后几名是轮播,而且轮播的几个asin也是挨着,有前后排名。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/669594.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

服务器数据恢复—服务器raid常见故障表现原因解决方案

RAID&#xff08;磁盘阵列&#xff09;是一种将多块物理硬盘整合成一个虚拟存储的技术&#xff0c;raid模块相当于一个存储管理的中间层&#xff0c;上层接收并执行操作系统及文件系统的数据读写指令&#xff0c;下层管理数据在各个物理硬盘上的存储及读写。相对于单独的物理硬…

kali中切换python版本

kali中切换python版本 在日常使用的过程中&#xff0c;可以通过一些工具来做打靶环境&#xff0c;或者工具的启动&#xff0c;都和python关联&#xff0c;而有时存在工具安装&#xff0c;或者运行的时候出现报错&#xff0c;这时候极大可能是因为我们本地的kali中python的版本不…

安装pytorch深度学习模型时要知道自己的电脑显卡是否支持CUDA

安装pytorch深度学习模型时要知道自己的电脑显卡是否支持CUDA&#xff0c;如何知道自己的显卡是否支持呢&#xff1f;可以去下面的网站&#xff0c;打开后就可以见到如下图所示&#xff1a; CUDA | 支持的GPU | GeForce (nvidia.cn)

【Mac】XMind for mac(XMind思维导图)v24.04.10311软件介绍和安装教程

软件介绍 XMind for Mac是一款功能强大的思维导图软件。它具有以下主要特点&#xff1a; 1.多样化的思维导图功能&#xff1a;XMind for Mac提供了丰富的思维导图编辑功能&#xff0c;用户可以创建各种类型的思维导图&#xff0c;包括组织结构图、逻辑图、时间轴图等&#xf…

基于优化Morlet小波的一维信号瞬态特征提取方法(MATLAB R2018A)

小波分析方法近些年逐步得到发展的一门数学分析技术&#xff0c;它对许多学科都有十分重要的影响。与傅立叶变换等其他传统方法相比&#xff0c;小波分解的方法中所用的小波基有着多种多样的结构&#xff0c;总结来说又包括正交小波系与非正交小波系。正交小波在信号处理领域目…

超越传统插值:利用深度学习提升视频帧率与清晰度

视频帧率的提升是视频处理领域中一个重要问题&#xff0c;它直接影响到视频的流畅度和观感。随着技术的发展&#xff0c;人们对于视频质量的要求越来越高&#xff0c;尤其是在捕捉快速运动场景时&#xff0c;高帧率视频能够提供更加清晰和连贯的视觉效果。然而&#xff0c;传统…

(2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X

Lumina-T2X: Transforming Text into Any Modality, Resolution, and Duration via Flow-based Large Diffusion Transformers 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 …

Dynamics CRM 修改新建记录的CreatedOn字段值

CRM在创建新记录时&#xff0c;一些系统属性例如创建者、创建时间是取当前创建记录的人以及当前的时间&#xff0c;而有时这些属性需要更改&#xff0c;例如创建时间&#xff0c;这个场景更多的用在数据迁移的时候&#xff0c;老数据有他的原始创建时间&#xff0c;不能因为迁移…

python在cmd中运行.exe文件时报错:不是内部或外部命令,也不是可运行的程序或批处理文件。的解决办法

添加系统环境变量&#xff1a; 设置环境变量&#xff0c;在用户变量里面添加 【PATH&#xff1a;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\Windows\SysWOW64】 在系统变量里面添加,【变量名&#xff1a;ComSpec】 【变量值&#xff1a;%SystemRoo…

springboot+vue的养老院管理系统

免费获取方式↓↓↓ 项目介绍036&#xff1a; http://localhost:8080/ admin 123456 测试用户 123456 测试护工 123456 二、技术栈 所有场景都支持 适合零基础小白练手和实战&#xff1b;适合二次开发&#xff1b; 项目图片概览&#xff1a; 以上是对本项目的界面预览。 界…

比较3维空间中4个点的不同结构

在4*4*4的3维空间中&#xff0c;取4个点共有635376种可能&#xff0c;有209个结构&#xff0c;继续按旋转对称分类则只有55个不同的结构。如其中的4t12 4个点在同一个平面&#xff0c;有1个点与其中的3个点不在同一行也不在同一列&#xff0c;这样的位置不止一个 这两个结构都是…

JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测

JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测 目录 JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多…

【产品经理】总篇章

引言: 在最近频繁的产品职位面试中&#xff0c;我深刻体会到了作为产品需要的不仅仅是对市场和技术的敏锐洞察&#xff0c;更多的是在复杂多变的环境中&#xff0c;如何运用沟通、领导力和决策能力来引导产品从概念走向市场。这一系列博客将分享我多年经历和所学到的所以知识&a…

golang线程池ants-四种使用方法

目录 1、ants介绍 2、使用方式汇总 3、各种使用方式详解 3.1 默认池 3.2 普通模式 3.3 带参函数 3.4 多池多协程 4、总结 1、ants介绍 众所周知&#xff0c;goroutine相比于线程来说&#xff0c;更加轻量、资源占用更少、无线程上下文切换等优势&#xff0c;但是也不能…

知识计算概述

文章目录 知识计算研究现状技术发展趋势 知识计算 随着知识图谱技术及应用的不断发展&#xff0c;图谱质量和知识完备性成为影响知识图谱应用的两大重要难题&#xff0c;以图谱质量提升、潜在关系挖掘与补全、知识统计与知识推理作为主要研究内容的知识计算成为知识图谱应用的重…

Hive-因精度丢失导致的 join 数据异常

一、问题复现 不知你是否遇到过 join 结果明显不匹配的情况&#xff0c;例如on t1.join_key t2.join_key中两个join_key明显不相等&#xff0c;但 join 的结果却将其匹配在一起。今日博主在通过用户 id 关联获取用户信息时发现一个用户 id 可以在用户维表中匹配出若干条&…

Simulink中使用ROS1自定义消息

Simulink中使用ROS1自定义消息 简介前提条件操作流程问题一问题二问题三 吐槽 简介 最近在做的项目里需要使用Simulink与ROS联合仿真&#xff0c;这里就遇到了一个问题&#xff0c;Simulink无法直接使用ROS中的自定义消息&#xff0c;需要在MATLAB中生成一下&#xff0c;再引入…

D3D 顶点格式学习

之前D3D画三角形的代码中有这一句&#xff0c; device.VertexFormat CustomVertex.TransformedColored.Format; 这是设置顶点格式&#xff1b; 画出的三角形如下&#xff0c; 顶点格式是描述一个三维模型的顶点信息的格式&#xff1b;可以包含以下内容&#xff0c; 位置…

C语言:如何在微软VS环境下使用C库?

技术答疑流程 扫描二维码&#xff0c;添加个人微信&#xff1b;支付一半费用&#xff0c;获取答案&#xff1b;如果满意&#xff0c;则支付另一半费用&#xff1b; 知识点费用&#xff1a;10元 项目费用&#xff1a;如果有项目任务外包需求&#xff0c;可以微信私聊

LLM背后的基础模型 1

写在最前面的话 任何开源技术是最有生命力的&#xff0c;也是最具分享精神的。一直觉得大模型领域需要有一个系列能够从零开始系统性的讲述领域知识&#xff0c;给与这个领域的从业人员或者对其有兴趣的门外汉及时的帮助。国外承担“布道者”的公司众多&#xff0c;而数砖公司…