如何判断百度知道的问题是否还存在?

背景:最近公司在做百度知道的推广,但是百度推送过来问题之后,可能当天或者隔天就会把问题删除,这样在我们回答问题的时候,百度返回的信息是问题已经不存在,这浪费了我们编辑不少的时间,因此做了一个在回答问题之前,首先判断问题是否存在的接口,这样才能避免问题答复的浪费。

需要做的工作包括:

1.  做好一个PHP接口,用于判断百度的知道问题还是否存在,判断的依据,就是百度知道的唯一问题id,一般百度知道的问题展示形式是:

http://zhidao.baidu.com/question/1047344235728537699.html

其中红色部分就是问题id,判断的方法就是看这个网页的标题,是否包含特定的关键字,具体关键字很好确定,你懂的。

具体的PHP代码如下,可以把如下代码另存为文件,比如ifbaiduexist.php:

<?php

$bdid=$_GET['baiduid'];

/*20150128添加判断百度问题是否被删除函数*/

/*在用*/
function file_title_exists($id) {
$url='http://zhidao.baidu.com/question/'.$id.'.html';
$lines_array = file($url);
$lines_string = implode('', $lines_array);
preg_match('/<title>(.*)<\/title>/i', $lines_string, $title);

$strtitle = implode($title);
//echo $strtitle;

$strpos="信息提示";
if( strpos($strtitle,$strpos)>0 )
{
echo "document.write('not exist')";
}
else
{
echo "document.write('exist')";
}
}

file_title_exists($bdid);

 

2. 把PHP代码封装进行JS代码的封装,方便HTML的调用;

<script type="text/javascript" src="{SITE_URL}kbjia/ifbaiduexist.php?baiduid={$question['question_id']}"> </script>

3. 在Tipask端调用该接口,把返回的是否存在信息输出到问题页。

<h1>{$question['title']}(知道id:{$question['question_id']}-<script type="text/javascript" src="{SITE_URL}kbjia/ifbaiduexist.php?baiduid={$question['question_id']}"> </script>)</h1>

 

这样就完成了整个过程的制作,具体效果如下图所示:

1

 

 

 

2

 

收工!

 

参考:jb51