Node Red + Python爬取淘宝最新物流微信推送更新

实现过程:使用python脚本模拟登陆淘宝,定时爬取未确认收货的商品信息,如发现商品物流更新,则微信推送最新物流

效果图:

实现过程

  1. 爬取模拟登陆淘宝需要的关键信息填入python脚本中并测试
  2. 在nodered宿主机上运行python脚本

一、爬取模拟登陆淘宝需要的关键信息填入python脚本中并测试

二、在nodered里使用exec节点运行python脚本(文章结尾下载脚本)

  • 运行环境(此处以我的环境为例)
    • nodered(iobroker插件定制版,iobroker宿主机群晖docker)
    • 节点exec
    • 第三方库requests
    • 安装pip
  • 配置过程
    1. 将python脚本文件复制到/docker/iobroker文件夹下,如图

    2. 导入nodered流flows.json (4.0 KB)

    3. 先运行sys.py脚本查看python3路径,如图


      这时候直接运行username_login.py会报错ModuleNotFound,因为脚本文件中用到了第三方库requests,所以必须先下载requests

    4. 进入群晖套件中心安装python3image

    5. 进入ssh进入群晖安装pip,我参考到上评论中到方法


      SSH进入群晖不在此进行讨论

    6. 安装完pip,使用pip下载requests到指定路径。首先在终端中搜索文件夹:

      root@Z-NAS:/# find . -name ‘dist-packages’

      注意要在更路径(/#)下运行此命令,搜索过程较慢,请耐心等待。


      内容很多,全部复制到记事本,搜索usr/local/lib/python3.7/dist-packages,会搜索到多个结果,进入这些文件夹查看,我最终找到到路径是

      root@Z-NAS:/# pip install requests --target ./volume1/……(你的路径)

      安装完之后在进入这个文件夹会看到image
      7.再来运行python脚本,应该就可以得到结果,如果有错留言讨论。可以google和百度。

总结

  • 在安装第三方库的时候踩来很多坑,开始总是找不到第三方库,以为nodered运行python和群晖运行python调用的库是在一样的路径下,事实证明并不是。
  • 走完这一波操作以后可以很方便的使用python脚本来爬取其他的数据为自己所用。
  • 淘宝这种模拟登陆方式不知道能使用多久,也许在不久的将来就不行来,且用且珍惜。
  • 想要了解更多关于exec节点和其他节点的信息,建议去https://discourse.nodered.org/

python和flow下载:python_script.zip (7.8 KB)

参考资料

[1]原始脚本下载: https://github.com/pig6

[2]群晖pip安装: https://www.bilibili.com/read/cv1428431/ 中的评论

非常实用的功能,感觉如果做出docker是不是通用性更强一些

没这个水平 :sweat_smile:等大佬来搞

1 个赞

G%F{TMFO5Z}ZPY3212O{3N
大佬我报错了

有更简单的获取数据方案:

访问:https://page.cainiao.com/guoguo/app-myexpress-taobao/
登录后,拿到自己的api链接即可,直接解析json

这个接口直接访问就可以获取到json

怎么玩的 大佬 :joy:

这个应该跟json转码有关系吧,你看看文件夹里生成goods_info.txt了吗?我运行没遇到过这个问题。

没有的 :upside_down_face:

image 应该是运行到这里出现错误。
在图片里的代码前加入print(‘response.txt’ + response.text)
在图片里的代码之后加入print(‘response_txt’ + response_text),看看能输出什么

我想是你的这个地址错了吧

,你看看下教程第5步,按下展开更多信息获取到的那个地址。那个地址直接可以在浏览器里打开, 出现这样的格式就对了。另外我想到一个问题,我当时待收货的东西较多,会展示这个展开更多的选项。待收货的东西少的情况我没考虑到。但是只要获取到了地址就行了。

待收货2个没有展开

这个我这两天改一下 :sweat_smile:前两天快递太多了,忘了考虑这个情况了。

我用这个接口获取的API,用NR里的http request节点获取json的时候,返回是"{“api”:“mtop.cainiao.lpc.packageservice.querytaobaopackagelist”,“data”:{},“ret”:[“FAIL_SYS_SESSION_EXPIRED::Session过期”],“v”:“1.0”}",是因为验证的问题吧?有什么办法可以让NR获取到这个JSON吗?

先用浏览器试试,需要加上cookies 的,nr我不会玩,我只会python

cookie在哪里。。。找到的加上了 不对

已搞定QQ图片20200326100907

我刚刚更新了教程,没有展开的情况我也写值教程里了。

如果用nr来保存和读取cookie,我们的方法都差不多,我这最后也是解析json。这里烦就烦在要用第三方库,其他也不是太麻烦。 :grin: