首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

50行代码教你打造一个公众号文章采集器

Alfred的女票是一枚数据科学领域的新媒体运营官(是的,Alfred是一名程序员,Alfred有女票),每天都要阅读大量的行业相关文章,以掌握行业的动向,挑选和生产相关内容。为此,她关注了一大批的相关公众号,每天都一个个公众号挨个点开阅读,怪麻烦的。

一来可能漏掉某些公众号更新的重要讯息,二来经常会看到转载的重复性的文章。

这可咋办呢?

身为一个合(gao)格(shi)的男票,我是那个看在眼里急在心里啊!

那就写一个公众号文章的收集器吧,每天早上9点的时候都把昨天一天以来各个行业内公众号发表的文章的标题、摘要和链接等相关信息爬下来,形成一个文档发给女票,这样可以大大方便阅读。

就这么愉快地决定了

需求很简单,主要分为两块,一块是公众号文章爬取,一块是把爬回来的文章储存为word文档。

公众号文章爬取

首先跟女票要了她关注的公众号,结果她发我很长很长的一串列表,足足有50多个公众号。算了算,如果每个公众号每天更新3篇文章,那么她每天最少就得看150多篇公众号文章,确实是够呛呀。

接着是爬取公众号文章。这方面早已有人造好了轮子,也就是基于搜狗微信搜索的微信公众号爬虫接口:WechatSogou,在此感谢@Chyroc。

传送门:https://github.com/Chyroc/WechatSogou

也就是,我们不用自己造轮子,只需要调用API就好了。

wechatsougou的使用很简单,先实例化一个WechatSogouAPI,便可以调用get_gzh_article_by_history()方法返回最近10篇文章,比如说要爬取“Alfred在纽西兰”的文章,便是:

这样便可以返回一个json文件,里面包含“Alfred在纽西兰”公众号的最近10篇文章。

这个轮子是不是嗖嗖的?

可见,文章储存在“article”对应的列表里,相关的信息有标题(title)、摘要(abstract)、文章链接(content_url)、发表时间(datetime)、是否头条(main)、版权状况(copyright_stat)等。

当然,作为一个贴心的男票,我还加上了头条文章过滤和原创文章过滤,默认把不是头条和不是原创的文章都过滤掉,并把它封装成一个function:

存储为word文档

最后爬回来的文章是一个list,里面每个dict存放着每篇文章的信息。我们需要把这个list保存到word文档里面,并且以一个清晰的排版呈现出来。

这时候有一个叫python-docx的库,可以很方便的帮助我们来做这件事情。传送门:https://python-docx.readthedocs.io/

Python-docx的使用也很简单,实例化一个类,再通过add_headingd()的方法添加标题、add_paragraph()方法添加段落、add_picture()方法添加图片,便可以按照我们的想法进行排版。例如:

上面一段代码生成的word文档长这样:

因此,遍历一下爬回来的list,然后排版,保存到本地,便大功告成了。

最后爬回来的文档开头长这样:

结尾长这样:

撒狗粮成功!溜了~

后记:

1.后期还可以为这个采集器加上更多的功能,比如说再添加一个把word以邮件形式直接发送邮箱的功能,或者保存为Excel的功能等,都是可以的;

2.当然也可以把它转换成小程序,方便运行;

3.由于验证码识别的原因,有一些验证码需要人工识别,希望以后的wechatsougou可以更强大;

4.完整的python文件可以前往Github:https://github.com/Alfred1984/interesting-python或者关注公众号“Alfred在纽西兰”获取。

我是Alfred,一个专注数据挖掘的伪文科生,各位大爷喜欢给个关注呗!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180508G16VBS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券