• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

JD价格监控【docker版】

其他 limes 2009次浏览 0个评论

快过年了,准备买些年货,于是频繁刷购物网站对比价格,搞得还是挺头大的。我想能不能做个应用抓取实时价格并在低于预期价格后进行提醒,于是就有了本篇文章。本文主要分享怎么将本地项目打包成镜像并推送到dockerhub上

最初用的是node+cheerio,请求商品页面通过选择器解析商品名称和价格。但是多次调试后页面会在页面内重定向,这样就抓取不到了,应该是触发了jd的反爬虫机制。在换了几种方式无果后将眼光投向了github,最终fork了一份由python实现的方案进行改善。

效果

JD价格监控【docker版】
JD价格监控【docker版】
JD价格监控【docker版】

技术栈

  1. 前端:Boostrap+Jquery
  2. 后端:Python+Flask
  3. 爬虫:requests+beautifulsoup4+PyExecJS
  4. 代理池:https://github.com/0xHJK/Proxies 简易实现

fork后新增自定义商品字段,增加钉钉通知,增加docker启动。

注意

  1. 需要调用nodejs来获取token,所以不仅需要python,还需要node环境。
  2. 因为配置文件需要自己设置,所以新增config文件夹方便文件挂载
# 基于python创建镜像
FROM python:3.7.0
# 设置工作目录
WORKDIR /usr/src/app
# 设置pip镜像
RUN pip config set global.index-url http://mirrors.aliyun.com/pypi/simple
RUN pip config set install.trusted-host mirrors.aliyun.com
# 把本地文件复制到镜像工作目录下
COPY . .
# 安装node环境
RUN wget https://npm.taobao.org/mirrors/node/latest-v12.x/node-v12.16.1-linux-x64.tar.xz && tar -xf node-v12.16.1-linux-x64.tar.xz -C /opt
# 设置环境变量
ENV EXECJS_RUNTIME=$PATH:/opt/node-v12.16.1-linux-x64/bin
RUN ln -s /opt/node-v12.16.1-linux-x64/bin/node /usr/local/bin/
RUN ln -s /opt/node-v12.16.1-linux-x64/bin/npm /usr/local/bin/
# 打印版本
RUN echo 'node 版本:' && node -v
RUN echo 'python 版本:' && python -V
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 启动
CMD  cd web && python server.py

生成并推送本地镜像到dockerhub

  1. 生成本地镜像
    docker build -t jdspider .
  2. 修改本地镜像和dockerhub上一样
    docker tag jdspider yimijianfang/jd-spider:0.6
  3. 登录dockerhub
    docker login
  4. 推送
    docker push yimijianfang/jd-spider:0.6

不想上传到dockerhub还可以在本地打镜像压缩包

# 打包镜像到本地
docker save -o jdspider.tar jdspider
# 解压加载镜像
docker load -i jdspider.tar

使用方法

在宿主机上添加配置文件

cd /data/jd-spider/config
touch config.cfg
# config.cfg
[mail]
host     = smtp.qq.com
port     = 25
user     = xxx@qq.com
pass     = xxx
sender   = xxx@qq.com

[dingding]
webhook  = https://oapi.dingtalk.com/robot/send?access_token=xxx

[select]
option   = mail
# 启动docker
docker run --name jdspider -p 5858:5858 -v /data/jd-spider/config:/usr/src/app/web/config -d yimijianfang/jd-spider:0.6

打开http://ip:5858查看效果,另外如果使用邮箱需要申请开放25端口

github地址:https://github.com/yimijianfang/mall-monitor

其他项目,欢迎star

vue滑块验证组件 https://github.com/yimijianfang/vue-drag-verify
jquery音乐播放插件 https://github.com/yimijianfang/music
vue组件props自动生成器 https://github.com/yimijianfang/auto-props


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明JD价格监控【docker版】
喜欢 (0)

您必须 登录 才能发表评论!

加载中……