// ==UserScript== // @name Amazon采集 // @namespace https://blog.csdn.net/mukes // @version 0.0.1 // @description 亚马逊采集 // @author Fux // @match *.amazon.com*dp/* // @match *.test.mytool.maykis.cn/* // @match *.gather.mytool.maykis.cn/* // @match *.walmart.com/ip/* // @grant GM_xmlhttpRequest // @connect * // @downloadURL https://update.greasyfork.icu/scripts/485196/Amazon%E9%87%87%E9%9B%86.user.js // @updateURL https://update.greasyfork.icu/scripts/485196/Amazon%E9%87%87%E9%9B%86.meta.js // ==/UserScript== (function() { //插件登录页面 function loginInterface(){ let loginContainer = document.createElement('div'); loginContainer.id = "sp-ac-container"; loginContainer.style.position="fixed" loginContainer.style.left="70%" loginContainer.style.top="20px" loginContainer.style['z-index']="999999" //loginContainer.style.border="2px solid black" //loginContainer.style["border-radius"]="10px" loginContainer.innerHTML =`

登录插件

` document.body.appendChild(loginContainer);//生成插件悬浮窗 var loginButton = document.getElementById("loginButtom") loginButton.addEventListener("click", loginBottonClick) //监听按钮点击事件 function loginBottonClick(){ username = document.getElementById("username").value; password = document.getElementById("password").value; var loginUrl="https://test.mytool.maykis.cn/ums/oauth/token?username="+username+"&grant_type=password&scope=all&manageCompanyId=2000000001&password="+password+"&auth_type=user" var loginData="username="+username+"&grant_type=password&scope=all&manageCompanyId=2000000001&password="+password+"&auth_type=user" requestsHtml(loginUrl,loginData);//发起登录请求获取Authorization } } //插件功能页面 function operatingInterface(){ let operatingContainer = document.createElement('div'); operatingContainer.id = "operating-container"; operatingContainer.style.position="fixed" operatingContainer.style.left="70%" operatingContainer.style.top="20px" operatingContainer.style['z-index']="999999" operatingContainer.innerHTML =`
` document.body.appendChild(operatingContainer);//生成插件悬浮窗 var gatherButton = document.getElementById("gatherButtom")//获取采集按钮 gatherButton.addEventListener("click", gatherButtonClick) //监听按钮采集按钮点击事件 var quitButton = document.getElementById("quitButtom")//获取退出按钮 quitButton.addEventListener("click", quitBottonClick) //监听退出按钮点击事件 function quitBottonClick(){ console.log("退出登录!"); localStorage.removeItem("username")//删除username localStorage.removeItem("password")//删除password localStorage.removeItem("Authorization")//删除Authorization document.getElementById("operating-container").remove();//去除功能界面 loginInterface()//打开登录界面 } } //loginInterface()//登录界面 //operatingInterface()//功能界面 var headers={ "Host":"test.mytool.maykis.cn", "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0", "Accept":"application/json, text/plain, */*", "Accept-Language":"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "Accept-Encoding":"gzip, deflate, br", "Authorization":"Basic bWJzOm1ic3NlY3JldA==", "Access-Control-Allow-Origin":"*", "vc":"oauth", "auth":"0", "Origin":"https://test.mytool.maykis.cn", "DNT":"1", "Sec-GPC":"1", "Connection":"keep-alive", "Referer":"https://test.mytool.maykis.cn/mbs/", "Sec-Fetch-Dest":"empty", "Sec-Fetch-Mode":"cors", "Sec-Fetch-Site":"same-origin", "Pragma":"no-cache", "Cache-Control":"no-cache", "Content-Length": "0" } //登录请求函数 function requestsHtml(requestUrl,requestsData){ GM_xmlhttpRequest({ method: "POST", url:requestUrl, headers:headers , data:requestsData, onload: function(response){ console.log(response.responseText) var resData=JSON.parse(response.responseText) if (resData.success==false){ console.log("登录失败"); alert(resData.errmsg) }else{ alert("登录成功") Authorization="bearer "+JSON.parse(response.responseText).access_token localStorage.setItem("username", username);//设置账号 localStorage.setItem("password", password);//设置密码 localStorage.setItem("Authorization", Authorization)//设置Authorization console.log("登录成功!"); console.log("username:",username); console.log("password:",password); console.log(Authorization) document.getElementById("sp-ac-container").remove();//去除登录界面 operatingInterface();//开启功能界面 } }, onerror: function(response){ alert("登录失败") console.log("请求失败"); //localStorage.setItem("Authorization", false)//设置Authorization } }); }; //采集按钮触发 function gatherButtonClick(){ if (hostUrl=="www.amazon.com"){ extractAmazonData(); }else if((hostUrl=="www.walmart.com")){ alert("暂不支持沃尔玛") //extractWalmartData() } } //采集Amazon提取数据 function extractAmazonData(){ setTimeout(function(){ var pagesource=document.documentElement.outerHTML; //console.log(pagesource);//获取网页源码 var title try { title=document.getElementById("productTitle").innerHTML; //提取标题 } catch (e) { title=""; } console.log("title:",title); var categoryName//提取类目 try { categoryName=document.getElementsByClassName("a-link-normal a-color-tertiary")[1].innerHTML; //提取类目 } catch (e) { categoryName=""; } console.log("categoryName:",categoryName); var price //提取价格 try { price=document.getElementById("priceValue").value; //提取价格 //price=document.getElementsByClassName("a-section a-spacing-none aok-align-center aok-relative")[0].getElementsByClassName("aok-offscreen")[0].innerHTML; //提取价格 } catch (e) { price=0; } console.log("price:",price); //console.log(keyFeaturesList); var keyFeatures=new Array();//创建keyFeatures数组 try { var keyFeaturesList=document.getElementById("feature-bullets").getElementsByClassName("a-list-item"); //提取描述 for(let item of keyFeaturesList) { //console.log(item.innerHTML); keyFeatures.push(item.innerHTML); }; } catch (e) { keyFeatures=[]; } console.log("keyFeatures:",keyFeatures); var mainImageUrl//提取主图 try { mainImageUrl=document.getElementById("imgTagWrapperId").getElementsByTagName("img")[0].src; //提取主图 } catch (e) { mainImageUrl=""; } console.log("mainImageUrl:",mainImageUrl); var brand//提取品牌 try { brand=document.getElementById("bylineInfo").innerHTML.replaceAll("Brand:",""); //提取品牌 } catch (e) { brand=""; } console.log("brand:",brand); var packageWeight=""//提取Item Weight var productDimensions=""//提取Product Dimensions var bsrRanking=0//提取 Best Sellers Rank var sellerRegion=""//提取 Country of Origin var uploadTime=0//提取 Date First Available var productDetails=[] try{ productDetails=document.getElementById("productDetails_detailBullets_sections1").getElementsByTagName("tr"); //提取productDetails }catch (e) { productDetails=[]; } for(let item of productDetails){ if(item.getElementsByClassName("a-color-secondary a-size-base prodDetSectionEntry")[0].innerHTML.includes("Item Weight")){ packageWeight=item.getElementsByTagName("td")[0].innerHTML;}//提取Item Weight else if(item.getElementsByClassName("a-color-secondary a-size-base prodDetSectionEntry")[0].innerHTML.includes("Product Dimensions")){ productDimensions=item.getElementsByTagName("td")[0].innerHTML;//提取Product Dimensions }else if(item.getElementsByClassName("a-color-secondary a-size-base prodDetSectionEntry")[0].innerHTML.includes("Item Display Dimensions")){ productDimensions=item.getElementsByTagName("td")[0].innerHTML;//提取Product Dimensions }else if(item.getElementsByClassName("a-color-secondary a-size-base prodDetSectionEntry")[0].innerHTML.includes("Best Sellers Rank")){ bsrRanking=item.getElementsByTagName("td")[0].innerHTML.split("#")[1].split(" in")[0].replaceAll(",","");//提取 Best Sellers Rank }else if(item.getElementsByClassName("a-color-secondary a-size-base prodDetSectionEntry")[0].innerHTML.includes("Country of Origin")){ sellerRegion=item.getElementsByTagName("td")[0].innerHTML;//提取 Country of Origin }else if(item.getElementsByClassName("a-color-secondary a-size-base prodDetSectionEntry")[0].innerHTML.includes("Date First Available")){ uploadTime=item.getElementsByTagName("td")[0].innerHTML;//提取 Date First Available }; //console.log(item.innerHTML); //keyFeatures.push(item.innerHTML); }; try{ uploadTime = new Date(uploadTime).getTime();//将时间转化为时间戳 }catch(e){ } console.log("Item Weight:",packageWeight); console.log("Product Dimensions:"+productDimensions); console.log("Best Sellers Rank:"+bsrRanking); console.log("Country of Origin:"+sellerRegion); console.log("Date First Available:"+uploadTime); var commodityStar//提取星级 try { commodityStar=document.getElementById("acrPopover").title.split(" out")[0]; //提取星级 } catch (e) { commodityStar=0; } console.log("commodityStar:"+commodityStar); var imgList=new Array();//提取副图 try{ var data=JSON.parse(pagesource.match(/'colorImages': \{ 'initial':(.*)\},/)[1]); for(let img of data){ if (img.hiRes === null){ imgList.push(img.large); }else{ imgList.push(img.hiRes) }; }; }catch (e){ imgList=[] } console.log("imgList",imgList); var store//提取商品库存 try { store=document.getElementById("availability").getElementsByTagName("span")[0].innerHTML;//提取商品库存 } catch (e) { store=""; } if (store.includes("In")||store.includes("Qty")){ store="有库存"; }else if(store.includes("Only")){ store="少量库存"; }else if(store.includes("Out")||store.includes("out")||store.includes("Currently unavailable")||store.trim()===""){ store="无库存"; }else{ store="有库存"; } console.log("store:",store); var description try { description=document.getElementById("productDescription").getElementsByTagName("span")[0].innerHTML;//提取商品描述 } catch (e) { description=document.getElementById("aplus_feature_div").innerText;//提取商品描述 } console.log("description:",description); //var deliveryMethod=pagesource.match(/>Sold by(.*?)