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

本文主要是介绍如何区分解析亚马逊网站产品搜索结果页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也是挨着,有前后排名。

这篇关于如何区分解析亚马逊网站产品搜索结果页HTM代码中广告位( Sponsored)和自然位的产品ASIN及排名的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1022938

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解