微信开发自动回复百科内容(百度百科已经失效,现在用互动百科)

 1               switch($keyword){
 2                             default:
 3                         include(‘get_baike.php‘);
 4                                 $data = getEncyclopediaInfo($keyword);
 5                                 if($data[0][‘Title‘]){
 6                                     $contentStr=$data[0][‘Title‘]."\n";
 7                                     $contentStr.=$data[1][‘Title‘]."\n";
 8
 9                                 }
10                                 else{
11                                     $contentStr="抱歉,没有找到与“".$keyword."”相关的百科结果。";
12                                 }
13                           $this->weixin_output($contentStr,$textTpl,$fromUsername,$toUsername,$time);
14                                 break;

get_baike.php

 1 <?php
 2 function getEncyclopediaInfo($name){
 3   //$name_gbk = iconv(‘utf-8‘, ‘gbk‘, $name); //互动百科的网页编码为utf-8所以我们就省去这一行。可直接删除
 4   $encode = urlencode($name); //对字符进行URL编码,不然会出现乱码。
 5   $url = ‘http://www.baike.com/gwiki/‘.$encode;  //这行是我们输入的内容将在这个网页上进行内容采集
 6     echo "url is $url <BR>";
 7   $get_contents2 = httpGetRequest_baike($url); //直接获取网页内容,我们省去了多行代码,因为$url己经是最终需要采集的网页了。
 8 //    echo htmlspecialchars($get_contents2);
 9
10   preg_match(‘#\<div class="baiketitl"\>([\s\S]+?)(\<div id="custom_xinxi|\<div id="content"\>)#is‘, $get_contents2, $matchresult); //截取要采集的内容从<div class="baiketitl">开始到<div id="custom_xinxi或者<div id="content">结束。([\s\S]+?)为正则表达式。| 是或者的意思。为什么是<div id="custom_xinxi或者<div id="content">呢,因为我们只采集百科的简介部分。从网页源码我们可以看到。简介的部分是从<div class="baiketitl">到<div id="custom_xinxi结束,但是有一种情况是,没有简介,只有一个基本信息,那么我们就无法从源码里找到<div id="custom_xinxi,所以就会出错,但它会有一个基本信息,而它的结束为<div id="content">
11     echo "<Pre>";
12     print_r($matchresult);
13     echo "</pre>";
14     $bt = cut($matchresult[1],‘<h1>‘,‘</h1>‘,false,false); //$matchresult[1]为采集内容字符串。从这个内容中采集出百科的标题赋值给$bt变量.  $img = cut($matchresult[1],‘<img src="‘,‘"/>‘,false,false);//取出图片的链接,因为互动百科都有配图,所以这一步就轻松搞定。
15     $nr = cut($matchresult[1],‘</div><p>‘,‘</p>‘,false,false);//取出百科内容,从源码可以看到内容从</div><p>开始到</p>为一个段落的结束,由于微信只能接收2000个字以内,所以我们就直接取最一段的内容。
16     if(!trim($nr)){
17         $c2=str_replace("<h1>$bt</h1>","",$matchresult[1]);
18         $nr = strip_tags($c2);
19         $nr = str_replace("\n","",$nr);
20         $nr = str_replace("&nbsp;","",$nr);
21         $nr = str_replace("\r","",$nr);
22     }
23     echo "title is $bt<BR>";
24     echo "contnet is $nr<BR>";
25     $content[] = array("Title" =>$bt,"Description" =>"", "PicUrl" =>$img, "Url" =>"");//配置微信接收格式。单图文
26     $content[] = array("Title" =>$nr, "Description" =>"", "PicUrl" =>"", "Url" =>"");
27     if (isset($bt) != ""){//判断$bt有没有被赋值,如果不为空就输出内容,如果为空就是没有采集到内容就输出没有找到相关百科结果。
28       return $content;  //直接输出内容。
29     }else{  //否则
30     return "";
31   }
32 }
33 //以下这个函数对于新手非常有用。因为截取内容只需要将字符前后的内容填入就可以了,不需要用到正则表达式。
34 function cut( $from, $start, $end, $lt = false, $gt = false )
35  {
36     $str = explode( $start, $from );
37     if ( isset( $str[‘1‘] ) && $str[‘1‘] != "" )
38     {
39    $str = explode( $end, $str[‘1‘] );
40     $strs = $str[‘0‘];
41     }
42     else
43     {
44     $strs = "";
45     }
46     if ( $lt )
47     {
48     $strs = $start.$strs;
49     }
50     if ( $gt )
51     {
52     $strs .= $end;
53     }
54     return $strs;
55   }
56 //以下这个函数原封不动。主要的作用应该就是告诉目标站,我们是从百度过来看你的,你不要屏蔽我哦。谢谢!可以用到其它地方。
57 function httpGetRequest_baike($url)
58 {
59   $headers = array(
60     "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:14.0) Gecko/20100101 Firefox/14.0.1",
61     "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
62     "Accept-Language: en-us,en;q=0.5",
63     "Referer: http://www.baidu.com/"
64   );
65   $ch = curl_init(); //初始化
66   curl_setopt($ch, CURLOPT_URL, $url);//设置选项
67   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
68   curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);//
69   $output = curl_exec($ch);
70   curl_close($ch);//释放句柄,不然很占内存
71
72   if ($output === FALSE){
73     return "cURL Error: ". curl_error($ch);//这是检查错误的
74   }
75   return $output;
76 } 
时间: 2024-08-25 19:14:55

微信开发自动回复百科内容(百度百科已经失效,现在用互动百科)的相关文章

微信开发--自动回复图片

先上传图片获得media_id <?php define("AppID",""); define("AppSecret", ""); /* 新增一个永久的素材 */ $c = "1"; if($c == "1"){ $url = "http://api.weixin.qq.com/cgi-bin/material/add_material?access_token=&qu

微信开发学习路线

凭借大量活跃用户,微信已成为商家重要营销平台之一.商家为庞大用户群提供定制化服务的迫切需求,吸引了大量开发者/开发商投入到微信公众平台开发中.学习和掌握微信公众平台开发技术,已成为开发者淘金的另一重要选择. 在CSDN站内,拥有大量与微信开发相关的资源,包括技术博客.问题讨论.工具资源等.CSDN邀请多位微信开发专家对这些资源取其精华,按照微信开发的学习路线展示站内优质资源,从基础入门到高级开发,帮你全面掌握微信开发. 这里,我们为您推出的是微信开发的基础入门及高级进阶部分. 基础入门 认识微信

微信开发相关,了解一下

前言: 从微信公众号到现在的小程序,涉及微信开发方面的内容越来越多,工作大多时候是需要我们更了解微信开发的,比如老大说要做个什么东西,涉及到微信的,我们能立马想到方案或者提出可行性的分析吗?  因为微信开发有它自己的一套规则,有它自己的一套框架,有一定它带来的便利,也就有它带来的限制.  这篇文章,不写入门,不写开发流程,主要聊聊最近的一些调研和细节. 主要平台: 开放平台            (文档:微信开放平台文) 公众平台&小程序 (文档:微信公众平台文档&微信小程序文档) 商户平

python3 爬虫学习-根据关键词爬取百度百科内容

小白编了好久才写出来,记录一下免得之后再用的时候都忘了还得重新学~ 学习爬虫最开始是学习了慕课上的python课程,然后学习了慕课和网易云上的爬虫教程.这两个自己去查一下就好了~ 开始还比较费劲,毕竟熟悉需要时间么,而且python也不太熟悉. 关于python版本:我一开始看很多资料说python2比较好,因为很多库还不支持3,但是使用到现在为止觉得还是pythin3比较好用,因为编码什么的问题,觉得2还是没有3方便.而且在网上找到的2中的一些资料稍微改一下也还是可以用. 好了,开始说爬百度百

微信开发之关注自动回复

微信开发模式下关注自动回复官方给出的说明是: 推送XML数据包示例: <xml> <ToUserName><![CDATA[toUser]]></ToUserName> <FromUserName><![CDATA[FromUser]]></FromUserName> <CreateTime>123456789</CreateTime> <MsgType><![CDATA[even

微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法

原文:微信开发之附近商家地理位置计算和腾讯地图坐标转百度地图坐标的方法 腾讯地图坐标转百度坐标 案例:本次开发的系统是一个商家联盟积分系统.在全国各地都有商家联盟的网点. 要求实现的功能 a.微信粉丝通过微信号就能查看附近的商家 b.我的联盟系统统计在2公里之内的商家网点 c.并标出商家和粉丝位置的距离是多少米. d.在商家的详细介绍页面设置百度地图接入步行.公交.驾车一键导航功能 那么现在问题来了: 问题1:在做微信O2O开发的过程中,通过微信地理位置功能事件获得的是腾讯地图坐标.而我们的导航

node微信公众号开发---自动回复

微信开发的特点:1.post请求 (一定要注意,这里和配置域名的时候不一样,配置域名是get请求)2.数据包是xml格式的3.你给微信返回的数据也是xml格式的 var parseString = require('xml2js').parseString;//引入xml2js包 /** * 处理微信post消息请求 */ router.post('/', function (req, res) { try{ var buffer = []; //监听 data 事件 用于接收数据 req.on

微信开发调试工具

首先,微信公众号分两种类型和两种情况,两种类型分别是订阅号和服务号,两种情况是,已认证或未认证的订阅号.他们分别具体的接口权限大家可以在微信后台的"开发者中心-接口权限"看到. 如下图所示是我的接口权限: 以上显示"未获得"的接口状态,就是需要订阅号或服务号微信认证之后才有拥有的权限. 简单说,未认证的订阅号只有基础支持.自动回复和发送回复消息的接口,只有实现一些较简单的数据交互功能,例如本公众号(需要特别说明一下,本公众号也是未认证的订阅号,关于自定义菜单是一个微

合并_g2014___09微信开发合并

价值万元的微信教程一 目录 价值万元的微信教程一????1 一.简介????2 二.为什么要学习微信开发课程????2 三.微信与微信公众平台的区别????2 四.什么是微信公众平台????2 五.前期准备????3 六.微信的两种运营模式????3 1.编辑模式????3 七.开发者模式????5 1)微信验证接口下载????7 2)微信验证接口分析????7 3)微信响应接口????8 4)微信的6大接收接口????9 1) 文本消息????9 2)图片消息????10 3)语音消息????