php采集百度某关键词搜索结果的网址

作者:enenba | 发表于:2012-05-23 22:35 | 分类:php采集

       使用php采集搜索结果简单应用1——采集百度某关键词搜索结果的网址,搜索结果网址都在<span class="g">……</span>标签中,很容易采集到。 以下就上代码:

php源码

<?php
/**
 * 采集某百度某关键词搜索结果的网址 by enenba
 * 2012-6-6
 * 
 * @param str $keyword 关键词
 * @return array $result 搜索结果网址数组
 */
function baidu_keyword_fpage($keyword) {
	// 组成搜索url
	$url = 'http://www.baidu.com/s?word=' . $keyword;
	$html = file_get_contents($url);
	$search = '/<span class="g">(.*?)<\/span>/i';
	preg_match_all($search, $html, $r);
	return $r;
} 

if(isset($_GET[q])) {
$url = $_GET[q];
$urlarray = baidu_keyword_fpage($url);
}
?>

<html>
<head>
<title>查询百度关键词结果网址</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
</head>
<body>
<form method="get" action="">
	请输入关键词:<br />
	<input type="text" name="q" value="<?php echo $url; ?>"><input type="submit" value="查 询">
</form>
<br />
<?php
echo '<pre>';
print_r($urlarray[1]);
echo '</pre>';
?>
</body>
</html>

 

采集结果:

点击查看原图

对比一下:

点击查看原图

恢常的简单。

 

PS:如果想要采集第二页以上的内容

请在组成搜索url参数后加上&pn=10*N,pn的值为10的整数倍,  如:

第二页为

$url = 'http://www.baidu.com/s?word=' . $keyword . '&pn=10';

第三页为

$url = 'http://www.baidu.com/s?word=' . $keyword . '&pn=20';

………………

可以用循环解决,具体代码就不上了,上一个测试:

猛击这里在线测试

百度已经更新结构,以上内容可能失效,新规则待续...

no end....

上一篇: 编程语言中十六进制的正则匹配   |   下一篇:使用curl获取页面的meta中keywords和description» 标签: php采集 采集百度 采集网址

评论:

2012-09-20 08:27

蛮喜欢这个站的

2012-09-17 15:50

唔 这个似乎不大好使,因为span内包含的网址可能不完整,而且带了日期

2012-09-17 18:03

唔 我看了下,百度更新了,标签已经变了。
看来,又要修改规则了。