「分分钟上手weiphp插件开发」Vol.5——网页采集技术在weiphp插件中的使用

自从写了一系列开发教程之后,每天都有很多的朋友来问我问题,有时候手机上网特别不方便回答,于是想到了做一个技术问答社区,来专门解决微信开发爱好者在开发中遇到的各种问题,于是有了艾豆问答社区。

我对于艾豆问答社区的定位是做一个专注于微信开发问答的技术交流社区,类似于知乎、SegmentFault这种的,现在的规划是分成weiphp、微擎、小猪CMS几个板块,添加微信插件开发、微信功能定制等话题,通过技术分享、源码分享等方式来吸引各个平台的微信开发用户,以定制开发作为主要营收模式。

艾豆问答社区采用开源的问答社区程序WeCenter二次开发而成,由于技术、运营都只有我一个人,艾豆问答社区发展的进度比较慢,这几天想到了把我在艾豆问答社区解决的一些问题分享到艾豆乐园微信公众号里面,让所有的公众号用户能够浏览和提问,起到一个移动化交流的作用。于是想到了数据采集。

背景交代完毕,现在开始正题,讲一下如何用curl技术抓取目标网页并把抓取内容在微信中展示。

先来看一下要抓取的网站:http://idouly.com/wenda/

我现在需要做的就是把那些问问题的帖子都抓取下来,然后放到微信中显示。

关于创建插件、安装插件等等内容我就不写了,看过《分分钟上手weiphp插件开发》系列教程前面四篇的朋友应该都清楚。我现在主要讲一下这个插件的微信交互部分。

先贴代码:

从第17-53行是整个功能的核心代码。第17-20行是最基本的curl网页抓取程序,首先做的是把http://idouly.com/wenda/这个网站上所有的内容抓下来。第22行是一条正则匹配规则,匹配出所有的问题,并把匹配到的内容存在数组$m中。第24-29行是构建多图文消息的第一条消息。第31-35行是定义五张小图片。第37-44行构建了一个for循环,取出匹配到的问题数组中的最新五个问题,并用问题标题、链接以及自定义的小图片构建5条单图文消息。第46-51行构建最后一条单图文消息,点击该条消息可跳转至艾豆问答社区首页。第53行回复一条多图文消息(共7条单图文)。

看一下微信端的效果:

可以看到,但用户发送关键词触发此插件后,微信交互模型会自动去艾豆问答社区采集最新的五个问题,并把采集到的问题构建至一条多图文消息发送给用户。至此,整个功能开发完毕。

此插件开发起来比较简单,关键是需要熟练使用curl技术,设计合理的正则表达式匹配出所需的内容。对网页采集感兴趣的朋友可以去看一下我的其他的采集教程:http://idoubi.cc/?p=280,也可以联系我购买我的”掌上头条“微信采集插件。其中”掌上头条“微信采集插件非常有技术含量,里面运用了很多高级的正则匹配技术、模拟采集技术,具有很大的借鉴意义。