前言
关注我比较久的老朋友可能知道,我早些时候使用Selenium开发了文章多发平台AutoPublish,开发那个东西也是因为自己的需求。
一篇文章想扩散到多个平台,你要反复登录不同的平台复制粘贴文章,没有图片还好,如果文章中还涉及多个图片,那就很痛苦了,不同平台对图片上传支持不同,这个时候发送一篇文章就要比较长一段时间了,所以我开发了AutoPublish,今天介绍一个类似的工具「ArtiPub」。
ArtiPub
Github地址为:
https://github.com/crawlab-team/artipub
官方介绍如下:
ArtiPub (Article Publisher 的简称,意为 "文章发布者") 是一款开源的一文多发平台,可以帮助文章作者将编写好的文章自动发布到掘金、SegmentFault、CSDN、知乎、开源中国等。目前支持文章编辑、文章发布、数据统计的功能
比我那个美观多了。
官话就不多说了,直接来看一下它是怎么实现的吧!
ArtiPub初窥
ArtiPub使用Node.js开发,Node.js语法简单,所以不用担心自己看不懂。
在开始看一个项目实现前,先明确自己关注以及感兴趣的点,我只对它如何实现文章自动发布感兴趣,所以对其后台界面构建、多平台账号管理这些就不看了。
ArtiPub文章发布相关的爬虫在spiders目录下,最重要的就是BaseSpider类。
它使用了puppeteer来实现文章的自动发布,原理与AutoPublish类似,只是AutoPublish使用的是Selenium而它使用的是Puppeteer(木偶)。
Puppeteer是 Google Chrome团队官方的无界面(Headless)Chrome 工具,它是一个 Node 库,提供了一个高级的 API 来控制 DevTools 协议上的无头版 Chrome。Python版为Pyppeteer(非官方)。
Puppeteer比Selenium高级,因为很多网站已经可以识别Selenium了,从而导致使用Selen