Javascript 如何使用木偶师检测颜色?

Javascript 如何使用木偶师检测颜色?,javascript,puppeteer,Javascript,Puppeteer,我一直在尝试用木偶演员来检测网页上黄色的存在。任何关于如何实现这一点的见解都将不胜感激 使用getComputedStyle 通过在页面的所有元素上应用getComputedStyle,可以获得页面的颜色: let colr=new Set(); document.body.queryselectoral('*').forEach(n=>{ colr.add(window.getComputedStyle(n.color)); colr.add(window.getComputedStyle(n

我一直在尝试用木偶演员来检测网页上黄色的存在。任何关于如何实现这一点的见解都将不胜感激

使用getComputedStyle 通过在页面的所有元素上应用
getComputedStyle
,可以获得页面的颜色:

let colr=new Set();
document.body.queryselectoral('*').forEach(n=>{
colr.add(window.getComputedStyle(n.color));
colr.add(window.getComputedStyle(n.backgroundColor));
});
colr=[…colr];
或与木偶师一起浏览本页:

//from-dom.js
const puppeter=require('puppeter-core');
module.exports=async()=>{
//我正在Docker的Chrome上运行木偶演员。请在需要的地方更换。
const browser=wait puppeter.connect({browserWSEndpoint:'ws://localhost:3000'});
const page=wait browser.newPage();
等待页面。转到('https://stackoverflow.com/q/64839035/1244884');
常量颜色=等待页面。评估(()=>{
设colr=newset();
document.body.queryselectoral('*').forEach(n=>{
colr.add(window.getComputedStyle(n.color));
colr.add(window.getComputedStyle(n.backgroundColor));
});
colr=[…colr];
返回colr;
});
等待浏览器关闭();
控制台日志(颜色);
};
node-p-e'require(“./from dom.js”)()”
返回:

[
"rgb(36,39,41)","rgba(0,0,0)",,
"rgb(250250251)","rgb(0119204)",,
"rgb(132,141,149)","rgb(60,65,70)",,
"rgb(255,255)","rgb(83,90,96),,
"rgb(12,13,14)","rgb(106,115,124)",,
"rgb(214217220)","rgb(187192196)",,
"rgb(244,128,36)","rgb(57,115,157)",,
"rgb(225236244)","rgb(0149255)",,
"rgb(239240241)","rgb(244248251)",,
"rgb(59,64,69)","rgb(27,64,114)",,
"rgb(209229241)","rgb(228230232)",,
"rgb(0,0,0)","rgb(253,247,227)",,
"rgb(6114388)","rgb(2095661)",,
"rgb(57,86,151)","rgb(239,239,239)",,
"rgb(192,45,46)","rgb(192,72,72)",,
"rgb(251,242,212)","rgb(94,186,125)",,
‘rgba(12,13,14,0.5)’
]
下面是生成的调色板:

用截图
  • 拍摄页面的屏幕截图
  • 制作屏幕截图的调色板
  • 在这里,让我们再次截图此页面:

    //from-picture.js
    const puppeter=require('puppeter-core');
    const path=require('path');
    const getColors=require('get-image-colors');
    module.exports=async()=>{
    //我正在Docker的Chrome上运行木偶演员。请在需要的地方更换。
    const browser=wait puppeter.connect({browserWSEndpoint:'ws://localhost:3000'});
    const page=wait browser.newPage();
    等待页面。转到('https://stackoverflow.com/q/64839035/1244884');
    等待page.screenshot({path:'screenshot.png'});
    等待浏览器关闭();
    const options={count:10,键入:'image/png'};
    const colors=wait getColors(path.join(uu dirname,'screenshot.png'),选项);
    log(colors.map(c=>c.css());
    };
    
    node-p-e'require(“./from picture.js”)()”
    
    返回:

    [
    “rgb(55,76,87)”,
    “rgb(250251)”,
    “rgb(150161169)”,
    “rgb(242133,38)”,
    “rgb(92176224)”,
    “rgb(203214223)”,
    "rgb(157,90,31)",,
    “rgb(226204156)”,
    “rgb(244180132)”
    ]
    
    这里是screenshot.png;)

    这是调色板:


    你怎么知道一种颜色是黄色的? 这个很棘手。您如何判断
    rgb(6114388)
    是否为±黄色

    它应该可以与一个图书馆,如检查某种颜色是否是“在黄色范围内”,但我不知道如何做到这一点

    我发现这篇旧帖子可能会有所帮助:

    希望这足以让您开始;)