话说懒惰是人类进步的原动力,古人诚不欺我。最近在折腾一个微信公众号,开始的时候在网上找一些资源然后进行二次创作然后发表到微信公众号,但是这就要自己先把里面的图片下载下来然后文字也复制过来然后再慢慢的上传到微信公众号,干了几天以后发现这样效率太低了,每天都在干重复的事情,这作为一个程序员是不能忍受的,任何重复的事情都有实现自动化的价值,我们不能浪费生命在这种地方,废话不说,开搞。
- 从指定页面爬取数据
- 只爬取我们需要的内容(什么广告啊,导航那种是不要的)
- 然后把正文上传到微信公众号的草稿箱
- 微信的草稿箱接口只能放上传到微信里面的图片,所以我们要做一步额外的操作就是先把网页里面的图片提取出来上传到微信公众号里面,然后把正文里面的图片链接替换成微信公众号里面的 图片
- 上传封面图片到微信公众号 新增永久图文素材 | 微信开放文档 (qq.com)
- 上传正文图片到微信公众号
- 上传正文到公众号草稿箱 接口请求说明 | 微信开放文档 (qq.com)
- python 这边主要使用:requests,BeautifulSoup,json
这个是我们要分析的网页截图:
我们可以看出这个网页有自己的导航还有右边的推荐栏还有底部的导航,如果我们直接吧整个网页都扣下来上传到的微信公众号那无疑会给我们后期处理带来很多的工作,所以我们只需要正文也就是html里面的<article></article>里面的内容
- 我们先来看上传草稿API接口
- 请求参数说明
可以看出这个接口的参数有3个必须的,那么接下来我们就去网页的代码里面看看怎么拿到这3个参数
- 分析网页我们可以得到我们要的title就在class = 'entry-title'的a标签里面,而且我们还可以拿到文章的摘要在class=‘entry-summary’的div里面
- 所以我们首先抓取这个页面然后拿到title和摘要
- 接下来要准备搞定封面,这下开始用到微信公众号接口,但是在使用公众号接口之前我们要先获取一个token,来使我们有权限访问公众号的API接口,获取token的文档在这里:微信开放文档 (qq.com)
- 通过分析正文我们知道这个文章有很多图片,那我们就把第一个图片单做封面,先定义一个上传封面的方法
- 然后获取正文里面所有的图片,把第一个传入到这个方法里面获取封面id
- 接下来我们在定义一个上传正文其他图片的方法,因为其他图片需要返回的url不是media_id,所以调的另外一个接口
- 最后我们就可以开始准备上传文章到草稿箱,还是先定义方法,因为草稿接口的标题和摘要有长度限制所以这个方法开始做了一个限制如果长度超过了就截取字符串
- 然后再总方法里面调用我们的上传草稿的方法
- 查看结果,可以看到文章已经自动提交到草稿箱,接下里我们就可以进去进行二次创作进行发表了