因为新冠肺炎的关系,我所在的公司面临业务转型,所以在电商采集这一块,可能就终止了。
http://api.herobuy.com/ 接口项目就做个总结,留个念想。

背景

apiHerobuy项目是用于公司做逆向海淘(海外代购国内商品)业务,主要是通过实时解析国内多个大型电商的商品信息,
让海外的用户轻松购买国内的(淘宝、天猫、京东、1688等等的电商大头)商品。
但是由于最近的海外 新冠肺炎(英文︰COVID-19)疫情严重,海外的用户购买力下降,加上进出口限制更加严格等问题,
导致这方面的业务已经开展不下去了,于是公司代购业务面临转型,而该解析项目也就终止了。
于是,就这个项目做一些总结。毕竟,都是我一个人去完成的,就像自己的孩子一样..挺可惜的

项目展示

扉页

登录

注册

信息总览

菜单总览

爬虫运行管理


爬虫封装&部署

cookies池,账户信息管理


技术栈

包含但不限于以下技术栈..太多琐碎的了,就列举几个比较大的。

  1. Django
  2. Redis
  3. Mongodb
  4. Scrapy
  5. Scrapy-redis
  6. Scrapyd
  7. Docker
  8. uwsgi
  9. Nginx
  10. Boostrap4
  11. JQuery
  12. AdminLTE
  13. Pyppeteer
  14. Requests
  15. Celery
  16. DRF
  17. Linux-Ubuntu18.04
  18. 代理池
  19. cookies池
  20. 模拟登录
  21. asyncio

爬虫包含

  1. 京东scrapy:

    1
    2
    3
    4
    5
    jdItems:商品详情爬虫
    jdShop:商家商品爬虫
    jdSearch:商品搜索爬虫
    jdSearchm:商品搜索手机版爬虫
    兼容:京东大药房、一号店、拍拍等等京东旗下
  2. 淘宝(天猫)scrapy:

    1
    2
    3
    tbItems:商品详情爬虫
    tbShop:商家商品爬虫
    tbSearch:商品搜索爬虫
  3. 1688scrapy:

    1
    2
    3
    1688Items:商品详情爬虫
    1688Shop:商家商品爬虫
    1688Search:商品搜索爬虫

代理池

  1. 免费代理
    1
    2
    3
    使用 jhao104/proxy_pool 搭建的代理池,主要用于解决代理池从无到有的问题。
    算是代理池备用方案,将其内嵌到了apiherobuy中,并作了接口封装转发。
    该项目本身也有易扩展的优点,而且支持使用redis,跟apiherobuy技术栈契合。
  2. 付费代理阿布云
    1
    2
    3
    大型采集使用免费代理终归是不够的。
    所以还购买了阿布云代理,并开发有关的scrapy中间件,在中间件里面
    apiherobuy也做了一层代理接口,方便其他外部项目的调用

cookies池

  1. pyppeteer 模拟登录 cookies池
    1
    2
    3
    4
    使用django+celery+asyncio异步处理的组合来达到使用pyppeteer模拟登录淘宝的目的。
    登录成功的cookies会被入库保存,使用的时候通过有关接口调用即可,
    支持参数动态切换对应账号cookies。
    带有自动和手动cookies有效性检测。
  2. nodeJS Koa服务接口 处理JS逆向
    1
    计划中的东西,但是项目已经终止

工作流程简述

1
2
3
4
5
lete/herobuy 电商后端 -> apiherobuy接口(检查mongodb是否已存在或已过时) -> 
redis任务队列 —> docker(scrapy) * N 接受任务 —>
入库mongodb + 回调redis —> apiherobuy接口获取数据 —> 发送给 lete/herobuy 电商后端

apiherobuy接口平台具备web动态管理docker和爬虫部署运行的功能等等