您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Extract adId and ASIN from Amazon sponsored products and display them in a table at the top of the page
- // ==UserScript==
- // @name Amazon AdId and campaignid Extractor
- // @namespace http://tampermonkey.net/
- // @version 1.0
- // @author You
- // @description Extract adId and ASIN from Amazon sponsored products and display them in a table at the top of the page
- // @author Xiafancat and Chatgpt
- // @match https://*.amazon.com/s*
- // @match https://*.amazon.co.uk/s*
- // @match https://*.amazon.de/s*
- // @match https://*.amazon.fr/s*
- // @match https://*.amazon.it/s*
- // @match https://*.amazon.es/s*
- // @match https://*.amazon.co.jp/s*
- // @grant GM_download
- // @license Zlib/Libpng License
- // ==/UserScript==
- (function() {
- 'use strict';
- // 创建一个表格来存储 adId 和 ASIN
- const table = document.createElement('table');
- table.style.position = 'sticky';
- table.style.top = '0';
- table.style.background = '#fff';
- table.style.zIndex = '1000';
- table.border = '1';
- const tr = document.createElement('tr');
- const th1 = document.createElement('th');
- const th2 = document.createElement('th');
- const th3 = document.createElement('th');
- const th4 = document.createElement('th');
- th1.textContent = 'Title';
- th2.textContent = 'AdId';
- th3.textContent = 'ASIN';
- th4.textContent = 'CampaignId';
- tr.appendChild(th1);
- tr.appendChild(th2);
- tr.appendChild(th3);
- tr.appendChild(th4);
- table.appendChild(tr);
- // 添加下载按钮
- const downloadBtn = document.createElement('button');
- downloadBtn.textContent = 'Download as CSV';
- downloadBtn.style.position = 'sticky';
- downloadBtn.style.top = '0';
- downloadBtn.style.marginLeft = '10px';
- downloadBtn.style.zIndex = '1000';
- downloadBtn.addEventListener('click', function() {
- downloadTableAsCSV(table, 'Amazon_AdId_Extractor');
- });
- // 下载表格为CSV文件的函数
- function downloadTableAsCSV(table, filename) {
- let csvContent = '';
- const rows = table.querySelectorAll('tr');
- rows.forEach(row => {
- const cols = row.querySelectorAll('td, th');
- cols.forEach((col, index) => {
- let cellText = col.textContent;
- if (cellText.includes('"')) {
- cellText = cellText.replace(/"/g, '""');
- }
- if (cellText.includes(',') || cellText.includes('"')) {
- cellText = '"' + cellText + '"';
- }
- csvContent += cellText;
- if (index < cols.length - 1) {
- csvContent += ',';
- }
- });
- csvContent += '\r\n';
- });
- const csvBlob = new Blob([csvContent], {type: 'text/csv;charset=utf-8'});
- const csvURL = URL.createObjectURL(csvBlob);
- GM_download({
- url: csvURL,
- name: filename + '.csv',
- onload: function() {
- URL.revokeObjectURL(csvURL);
- }
- });
- }
- // 获取所有 sponsored product 的父元素
- const sponsoredProducts = document.querySelectorAll('.s-result-item[data-component-type="s-search-result"]');
- // 遍历每个 sponsored product,并添加 adId 和 ASIN
- sponsoredProducts.forEach((product, index) => {
- console.log('Processing product #' + (index + 1));
- const adAsinParent = product.querySelector('.a-popover-preload .a-declarative');
- if (adAsinParent && adAsinParent.dataset && adAsinParent.dataset.sSafeAjaxModalTrigger) {
- const data = adAsinParent.dataset.sSafeAjaxModalTrigger;
- console.log('data:', data);
- try {
- const jsonData = JSON.parse(data);
- if (jsonData && jsonData.ajaxUrl) {
- const decodedData = decodeURIComponent(jsonData.ajaxUrl);
- const dataJsonString = decodedData.match(/{.+}/);
- if (dataJsonString) {
- try {
- const dataJsonObject = JSON.parse(dataJsonString[0]);
- if (dataJsonObject && dataJsonObject.adCreativeMetaData && dataJsonObject.adCreativeMetaData.adCreativeDetails && dataJsonObject.adCreativeMetaData.adCreativeDetails.length > 0) {
- const adId = dataJsonObject.adCreativeMetaData.adCreativeDetails[0].adId;
- const asin = dataJsonObject.adCreativeMetaData.adCreativeDetails[0].asin;
- const campaignId = dataJsonObject.adCreativeMetaData.adCreativeDetails[0].campaignId;
- const titleElement = product.querySelector(`h2 > a[href*="${asin}"]`);
- if (titleElement) {
- const title = titleElement.textContent.trim();
- console.log('title:', title);
- const tr = document.createElement('tr');
- const td1 = document.createElement('td');
- const td2 = document.createElement('td');
- const td3 = document.createElement('td');
- const td4 = document.createElement('td');
- td1.textContent = title;
- td2.textContent = adId;
- td3.textContent = asin;
- td4.textContent = campaignId;
- tr.appendChild(td1);
- tr.appendChild(td2);
- tr.appendChild(td3);
- tr.appendChild(td4);
- table.appendChild(tr);
- } else {
- console.log('Title element not found');
- }
- } else {
- console.log('AdId or ASIN not found in jsonData.ajaxUrl');
- }
- } catch (error) {
- console.log('Error parsing JSON:', error);
- }
- } else {
- console.log('jsonData is not defined or jsonData.ajaxUrl is not found');
- }
- }
- } catch (error) {
- console.log('Error parsing JSON:', error);
- }
- } else {
- console.log('AdAsinParent not found');
- }
- });
- // 插入表格和下载按钮到页面中
- const sgColInner = document.querySelector('.sg-col-inner .s-main-slot');
- if (sgColInner) {
- sgColInner.insertBefore(table, sgColInner.firstChild);
- sgColInner.insertBefore(downloadBtn, table.nextSibling);
- }
- })();