前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NODEJS抓取网页的图片并推送到企业微信群

NODEJS抓取网页的图片并推送到企业微信群

作者头像
加菲猫的VFP
发布2023-12-26 12:06:27
1570
发布2023-12-26 12:06:27
举报
文章被收录于专栏:加菲猫的VFP加菲猫的VFP

最近在研发自动化工具,需要抓取登录二维码并发送到企业微信群。

1 第一关,找图。

nodeJs 通过selenium下操纵火狐浏览器下载图片,中间发现二维码竟然是在框架中的,抓取了好久都没成功。

代码语言:javascript
复制
 await driver.get("https://channels.weixin.qq.com/login.html");
    //await driver.switchTo().frame(By.xpath("/html/body/div[1]/div[3]/div/div/div[1]/div[1]/div/div/div[2]/div/iframe"));
    var iframe = driver.findElement(By.className("display"));
    driver.switchTo().frame(iframe);

    let ele = await driver.wait(until.elementLocated(By.xpath('/html/body/div[1]/div/div[1]/div/div[1]/img')),10000);
    let foo = await ele.getAttribute("src");

2 第二关,取图

图片是存放在src中的base64格式,但是前面加了一点东西,data:image/png;base64,iVBORw0

data:image/png;base64,是不能要的

取到的图是BASE64格式,因为企微群推送图片还要计算原图片的MD5,需要再转换一次,再计算md5码。

代码语言:javascript
复制
let base64Data = foo.split(';base64,'); 
    let type = base64Data[0].split('data:')[1]; 
    base64Data = base64Data[1];
    const dataBuffer = new Buffer(base64Data, 'base64'); //把base64码转成buffer对象,

    const hash = crypto.createHash('md5');
    // 可任意多次调用update():
    hash.update(dataBuffer);
    var md5string=hash.digest('hex');

3 推送企微

代码语言:javascript
复制
var postdata={
      "msgtype": "image",
      "image": {
          "base64": base64Data,
          "md5": md5string
      }
   }

  
   await  axios.post('https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的KEY',postdata)
      .then(function (response) {
        console.log(response.data);
      })
      .catch(function (error) {
        console.log(error);
      });
     console.log("发送");

至此大功告成。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档