开源一个半成品项目 某团商品抓取

开源一个半成品项目,思路是完整的,不过我自己不太想接着做下去,分享出来给有需要的人。

地址:github.com/xiaoxiuniqu...

背景

一个朋友让我帮他做一个软件,基本的功能需求就是帮美团商家处理店铺导入问题

比如我要开一个店,比如水果店,成人用品店。这样的店有一个特征就是店里面的大部分的商品都是标品(就是不怎么需要修改),其实正常来说只需要对标到其他的店铺直接 Copy 一份过来就行。如果从 0 开始去录入,对于大部分商家而言都非常的困难,可能有的人电脑都不太会。

然而就拿成人用品这个品类来说,大概会有 500 多个商品,还有各种各样的分类,如果人工操作的话确实非常麻烦,因为这样的品类完全没必要自己操作,毕竟产品不是自己生产的,大部分产品的东西都非常标准。

这样 需求就产生了

大概方案

处理这个软件需求的初步方案分为下面几步

  1. 登录商家后台账号,获取商家登录信息,主要是 cookie
  2. 抓取需要复制数据商家的店铺商品信息,包括活动,营销图信息
  3. 将对应的店铺的商品上传到自己的店铺

分析完大概方案基本上可以确定这是一个 electron 软件,纯 web 方案实现难度也比较高,需要和美团的爬虫团队对抗处理各种人机验证,环境监测,滑块。属实没必要。

基本方案就是 ,通过 electron 的 webview 获取到 cooike

在 electron 里面启动好 代理软件,比如 anyproxy, http-mimt-proxy, 这样的,并自动配置好 https 证书,以及电脑的代理端口。 在微信里面,大概电脑端的美团店铺的微信小程序,然后浏览商品,浏览过程中,通过 代理软件保存商品信息,等到后面进行上传。

避免后续商品冲突,在上传之前需要先删除掉所有的原店铺里面的所有商品分类,以及对应的商品信息。

然后上传商品

详细方案

店铺登录

这个没什么好说基本思路就是 通过 webview 打开登录的页面,然后在页面里面 监听是否登录成功,登录成功之后获取页面里面的 cookie 并发送给 main process 进行保存。

具体的方案可以监测登录后的 localStorage 1s 检测一次,有就说明登录成功了。

复制对应店铺的数据

因为成本问题,所以采用这种抓包的方式,如果直接通过调用接口的方式,需要逆向代码,成本太高。

这里我直接使用了 anyproxy,这个我比较熟悉这个,其他的也可以

json 复制代码
      async beforeSendResponse(req, res) {
        if (req.url.indexOf("wx-shangou.xx.com") === -1) {
          return null;
        }

        console.log(req.url);
        if (req.url.indexOf("/mtweapp/v1/poi/sputag/products") !== -1) {
          const r = JSON.parse(Buffer.from(res.response.body).toString());
          const projectList = r.data.product_spu_list;
          win?.webContents.send("product-list", projectList);
          return null;
        }

        if (req.url.indexOf("/mtweapp/v1/poi/food") !== -1) {
          const r = JSON.parse(Buffer.from(res.response.body).toString());
          const tags = r.data.food_spu_tags;
          win?.webContents.send("tags", tags);
          return null;
        }

        return null;
      }

具体的方案就是 监听对应接口的 response 请求,然后保存具体的值。

将数据上传到自己的店铺

有几种方案,一种是通过 excel 的方式上传 可以将商品整理成美团官方规定的格式用 excel 的方式进行上传,不过根据我的实验,只有小部分标准商品可以,大部分的商品还是有问题的。

第二种方法就是直接通过后台的接口进行上传,这个在后台操作的时候可以看出来,对应的就是补起参数就可以了。但是也是比较麻烦

已完成的功能

目前店铺登录,抓取竞品数据,清除店铺数据,包括上传,其实都 OK 了,就是上传数据不太完成,可能还需要仔细分析一下 包,核对一下数据才行。

目前存在的问题

登录问题

因为前期测试的原因,所以我是保存了店铺的固定的 cookie 然后模拟登录的,实际上调试就可以使用这样的方式, 因为美团的后台的cookie其实很长时间都不会更新,真正在测试的时候,使用我上面注视掉的代码就可以。

证书问题

因为我们需要进行中间人抓包,所以在你的电脑上需要安装好 HTTPS 证书,这个流程应该是可以自己完成的 但是我现在没做,嫌麻烦,大家自己用的时候也可以先自己手动安装证书,自己测试通之后再自己安装证书

全局代理问题

在启动中间人抓包之后,还有一个需要为电脑设置全局代理

json 复制代码
networksetup -setwebproxy Wi-Fi 127.0.0.1 8003;
networksetup -setsecurewebproxy Wi-Fi 127.0.0.1 8003;

MAC 下面的命令是这个样子的。

我不接着做的原因

主要一个是没有太多相关的测试数据,朋友只提供了一个商家店铺,实际上它里面的类别还是挺多的,不太好测试, 再者就是里面的需要核对的数据太多了,再没有足够的测试数据的情况下,就比较麻烦了,调试起来就比较烦人,还有,也是最重要的原因,就是没有预算,再见。

相关推荐
汪子熙1 分钟前
理解 git checkout 与 git reset 的联系和区别
后端
程序员爱钓鱼8 分钟前
Go 语言泛型 — 泛型语法与示例
后端·面试·go
coding and coffee13 分钟前
狂神说 - Mybatis 学习笔记 --下
java·后端·mybatis
程序员张34 小时前
SpringBoot计时一次请求耗时
java·spring boot·后端
程序员岳焱10 小时前
Java 与 MySQL 性能优化:Java 实现百万数据分批次插入的最佳实践
后端·mysql·性能优化
麦兜*11 小时前
Spring Boot启动优化7板斧(延迟初始化、组件扫描精准打击、JVM参数调优):砍掉70%启动时间的魔鬼实践
java·jvm·spring boot·后端·spring·spring cloud·系统架构
大只鹅11 小时前
解决 Spring Boot 对 Elasticsearch 字段没有小驼峰映射的问题
spring boot·后端·elasticsearch
ai小鬼头11 小时前
AIStarter如何快速部署Stable Diffusion?**新手也能轻松上手的AI绘图
前端·后端·github
IT_102412 小时前
Spring Boot项目开发实战销售管理系统——数据库设计!
java·开发语言·数据库·spring boot·后端·oracle
bobz96512 小时前
动态规划
后端