php获取百度关键词查询结果总数

作者:enenba | 发表于:2012-06-07 23:49 | 分类:php采集

这一次采集,使用php采集百度某关键词结果的总数。这个在很多的站长工具都有,可以了解某关键词热度。上几张效果图

1、搜索我的enenba

enenba搜索结果 

 

2、emlog的搜索结果

emlog的搜索结果

 

3、来个多的

搜索qq结果总数

 

 

怎么样,好吧上源码:

 源码一。(需要phpQuery类)

<html>
<head>
<title>在线演示_php获取百度关键词查询结果总数 by enenba.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="keywords" content="百度,baidu,查询结果">
<meta name="description" content="php获取百度关键词查询结果总数 by enenba.com">
</head>
<body>
<?php $k=isset($_POST['k'])?$_POST['k']:''; ?>
<form method="post" action="">
	查询关键词:
	<input type="text" name="k" size="50" value="<?php echo $k ?>">
	<input type="submit" value="提交">
</form>

<?php
require('phpQuery/phpQuery.php');
/*
	获取百度关键词查询结果总数 by enenba
	2012-6-8  (需要phpQuery类)
	@param str $keyword 
	@param str 整型字符
 */
function getKeywordTotal($keyword) {
	$url = 'http://www.baidu.com/s?wd='.$keyword;
	$html = file_get_contents($url);
	phpQuery::newDocumentHTML($html); //初始化,读取html源码
	$match = pq('.nums'); //获取<span class="nums">中部分
	$match = str_replace(',','',$match); //去逗号
	preg_match('/<span[^>]*>.*?(\d+)/',$match,$r);//得到最后的总数:
	return $r[1];
}
if($k=='') {
	exit('请输入数据');
}else{
	echo '共有'.getKeywordTotal($k).'个结果。';
}
?>

</body>
</html>

 

针对没有phpQuery类的情况,再写了一份正则以解决,代码如下:

源码二。(不需要phpQuery类)

<html>
<head>
<title>在线演示_php获取百度关键词查询结果总数 by enenba.com</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="keywords" content="百度,baidu,查询结果">
<meta name="description" content="php获取百度关键词查询结果总数 by enenba.com">
</head>
<body>
<?php $k=isset($_POST['k'])?$_POST['k']:''; ?>
<form method="post" action="">
	查询关键词:
	<input type="text" name="k" size="50" value="<?php echo $k ?>">
	<input type="submit" value="提交">
</form>

<?php
/*
	获取百度关键词查询结果总数 by enenba
	2012-7-26
	@param str $keyword 
	@param str 整型字符
 */
function getKeywordTotal($keyword) {
	$url = 'http://www.baidu.com/s?wd='.$keyword;
	$html = file_get_contents($url);
	$search = '/<span class="nums"[^>]*?>[^<]*?([0-9,]*?)</i'; //获取<span class="nums">中部分
	preg_match($search,$html,$match);
	$match = str_replace(',','',$match); //去逗号
	preg_match('/<span[^>]*>.*?(\d+)/',$match[0],$r);//得到最后的总数:
	return $r[1];
}
if($k=='') {
	exit('请输入数据');
}else{
	echo '共有'.getKeywordTotal($k).'个结果。';
}
?>
</body>
</html>

 

 

在线演示 

 

 

end...

上一篇: 【转】flash的z-index,flash挡住其他html元素!   |   下一篇:phpQuery中pq()的使用(1)» 标签: php采集 百度搜索结果 总数

评论:

2012-07-25 16:56

php获取百度关键词查询结果总数怎么会提示:
Fatal error: Class 'phpQuery' not found

2012-07-26 08:52

我已经再写了一份无phpQuery类的版本,请参考源码二。
谢谢你的关注。

2012-07-11 09:12

这个结果总数挺纠结的

2012-06-16 10:39

这个好啊,收藏了

2012-06-11 10:35

这个好用哦,顶你了,呵呵