参考自知乎专题微信公众号内容的批量采集与应用,作者:飯口組組長
原作者(飯口組組長)有一句话:我的方法来源于许多同行的分享精神,所以我也会延续这个精神,将我的成果分享出来。
这系列的文章也是为了延续这份分享精神!
该系列文章是根据知乎专题的教程一步一步实现过程,以及实现过程中踩过的一些坑。
关于原理介绍这里就不重复了,大家可以参考知乎专题。
代码完善前准备
原作者用的是php环境,这里有能力的可以尝试其他语言实现,python、java等都可以,不过原作者已经给出一部分的php代码,这里也采用php来实现。
所以要准备php环境,win下推荐使用wamp、xamp、phpstudy等懒人集成环境,因为之前电脑里存在wamp环境,就直接使用了。首先配置虚拟域名,不配也行。不过下文代码需要改成自己对应路径。配置虚拟域名可以教程可以参考我的另一篇文章php本地虚拟域名配置和端口的一些折腾。这里假设我配置的虚拟域名为hojun.weixin.com
修改rule_default.js代码
下面只给出部分例子,其他的做相同更改(若是没有配置虚拟域名,需要把域名改成路径访问即,如localhost/weixin/,改成http://localhost/weixin/getWxHis.php即可):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| HttpPost(ret[1],req.url,"/getMsgJson.php"); var http = require('http'); http.get('http://hojun.weixin.com/getWxHis.php', function(res) { res.on('data', function(chunk){ callback(chunk+serverResData); }) }); ------------------ var options = { method: "POST", host: "hojun.weixin.com", port: 80, path: path, headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', "Content-Length": content.length } };
|
找到函数replaceRequestOption修改:
1 2 3 4 5 6 7 8
| replaceRequestOption : function(req,option){ var newOption = option; if(/google/i.test(newOption.headers.host)){ newOption.hostname = "www.baidu.com"; newOption.port = "80"; } return newOption; },
|
创建数据库及数据表
在完善php代码前,我们还需要先创建好数据库及数据表。好消息是組長已经给出了数据表的创建sql语句。修改了一些语法报错和关键字重复
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 微信公众号表 CREATE TABLE `weixin` ( `id` int(11) NOT NULL AUTO_INCREMENT, `biz` varchar(255) DEFAULT ' ' COMMENT '公众号唯一标识biz', `collect` int(11) DEFAULT 1 COMMENT '记录采集时间的时间戳', PRIMARY KEY (`id`) ) ; 微信文章表 CREATE TABLE `post` ( `id` int(11) NOT NULL AUTO_INCREMENT, `biz` varchar(255) CHARACTER SET utf8 NOT NULL COMMENT '文章对应的公众号biz', `field_id` int(11) NOT NULL COMMENT '微信定义的一个id,每条文章唯一', `title` varchar(255) NOT NULL DEFAULT ' ' COMMENT '文章标题', `title_encode` text CHARACTER SET utf8 NOT NULL COMMENT '文章编码,防止文章出现emoji', `digest` varchar(500) NOT NULL DEFAULT ' ' COMMENT '文章摘要', `content_url` varchar(500) CHARACTER SET utf8 NOT NULL COMMENT '文章地址', `source_url` varchar(500) CHARACTER SET utf8 NOT NULL COMMENT '阅读原文地址', `cover` varchar(500) CHARACTER SET utf8 NOT NULL COMMENT '封面图片', `is_multi` int(11) NOT NULL COMMENT '是否多图文', `is_top` int(11) NOT NULL COMMENT '是否头条', `datetime` int(11) NOT NULL COMMENT '文章时间戳', `readNum` int(11) NOT NULL DEFAULT 1 COMMENT '文章阅读量', `likeNum` int(11) NOT NULL DEFAULT 0 COMMENT '文章点赞量', PRIMARY KEY (`id`) ) ; 采集队列表 CREATE TABLE `tmplist` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `content_url` varchar(255) DEFAULT NULL COMMENT '文章地址', `load` int(11) DEFAULT 0 COMMENT '读取中标记', PRIMARY KEY (`id`), UNIQUE KEY `content_url` (`content_url`) ) ;
|
登录phpMyAdmin后台,语言可以设置为中文。
注意设置排序规则为utf8_general_ci。
接着一个一个执行sql生成数据表就行。
未完待续……To be Continued……
希望这篇文章能给你带来知识和乐趣,喜欢博主的文章可以加博主好友哦
有好的文章也可以向博主投稿哦