如何区分解析亚马逊网站产品搜索结果页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

相关文章

网页解析 lxml 库--实战

lxml库使用流程 lxml 是 Python 的第三方解析库,完全使用 Python 语言编写,它对 XPath表达式提供了良好的支 持,因此能够了高效地解析 HTML/XML 文档。本节讲解如何通过 lxml 库解析 HTML 文档。 pip install lxml lxm| 库提供了一个 etree 模块,该模块专门用来解析 HTML/XML 文档,下面来介绍一下 lxml 库

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

【C++】_list常用方法解析及模拟实现

相信自己的力量,只要对自己始终保持信心,尽自己最大努力去完成任何事,就算事情最终结果是失败了,努力了也不留遗憾。💓💓💓 目录   ✨说在前面 🍋知识点一:什么是list? •🌰1.list的定义 •🌰2.list的基本特性 •🌰3.常用接口介绍 🍋知识点二:list常用接口 •🌰1.默认成员函数 🔥构造函数(⭐) 🔥析构函数 •🌰2.list对象

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

hdu 2093 考试排名(sscanf)

模拟题。 直接从教程里拉解析。 因为表格里的数据格式不统一。有时候有"()",有时候又没有。而它也不会给我们提示。 这种情况下,就只能它它们统一看作字符串来处理了。现在就请出我们的主角sscanf()! sscanf 语法: #include int sscanf( const char *buffer, const char *format, ... ); 函数sscanf()和

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

hdu 4517 floyd+记忆化搜索

题意: 有n(100)个景点,m(1000)条路,时间限制为t(300),起点s,终点e。 访问每个景点需要时间cost_i,每个景点的访问价值为value_i。 点与点之间行走需要花费的时间为g[ i ] [ j ] 。注意点间可能有多条边。 走到一个点时可以选择访问或者不访问,并且当前点的访问价值应该严格大于前一个访问的点。 现在求,从起点出发,到达终点,在时间限制内,能得到的最大

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close