我需要一个简单的采集程序去采集GOOGLE的SERP数据。
不需要大规模的,类似小偷程序。半自动去采集GOOGLE SERP一页一页去分析即可。1,用file_get_contents("$url");函数获得GOOGL SERP 的URL
2,preg_match_all($preg, $con, $arr);通过正则分析出需要的内容
3,ECHO 输出。这3步,似乎是读不到GOOGLE的内容的。注:百度就可以。后来,模拟蜘蛛方法也不行。需要怎么办?谢谢
不需要大规模的,类似小偷程序。半自动去采集GOOGLE SERP一页一页去分析即可。1,用file_get_contents("$url");函数获得GOOGL SERP 的URL
2,preg_match_all($preg, $con, $arr);通过正则分析出需要的内容
3,ECHO 输出。这3步,似乎是读不到GOOGLE的内容的。注:百度就可以。后来,模拟蜘蛛方法也不行。需要怎么办?谢谢
解决方案 »
- 急!我调用DZ论坛的附件帖子并分页显示但图片显示不对应怎么解决?
- Apache同一目录下html显示正常,php304拒绝显示
- 高手啊~~~为什么网址能重复使用呢 ?
- php sql语句,同一页面,不能使用2条sql语句嘛?
- wamp如何使用啊?
- 新手问一下关于php实行数据查询语句问题
- 图片上传大于100k就出Internal server error
- 数组传递过来的变量为什么不能输出值?
- 关于PHP制表单的问题,急,在线求救!
- HTML表格中带文件上传会引起MYSQL的出错吗?
- ip统计的网站,都是用什么办法统计用户点击了链接过来的还是直接浏览器输入的地址呢?
- 急急急,关于正则表达式的问题
结果GOOGLE返回:302 Moved
The document has moved here.
<?php $copyrightdmmaocom = "Copyright © 2009-2010 <a href=\"http://www.dmmao.com\">dmmao.com</a> 版权所有";
$search=$_GET['wd']; //接收关键词
$search=strtr($search,' ','+'); //将空格转换为+号
$search=strtr($search,'_','+');
$start=$_GET['start']; //翻页
$v000001=$_GET['yz']; //简体,繁体,英文
function v000002($v000003)
{
if (preg_match('/^(['.chr(228).'-'.chr(233).']{1}['.chr(128).'-'.chr(191).']{1}['.chr(128).'-'.chr(191).']{1}){1}/',$v000003) == true ||preg_match('/(['.chr(228).'-'.chr(233).']{1}['.chr(128).'-'.chr(191).']{1}['.chr(128).'-'.chr(191)."]{1}){1}$/",$v000003) == true ||preg_match('/(['.chr(228).'-'.chr(233).']{1}['.chr(128).'-'.chr(191).']{1}['.chr(128).'-'.chr(191).']{1}){2,}/',$v000003) == true)
{
return true;
}else{
return false;
}
}
if($start==''){
$start = '0';
}
if(v000002($search)){
$search=mb_convert_encoding("$search",'GBK','UTF-8'); //转换字符编码.将$search的UTF-8编码转换为GBK
$search=urlencode($search); //编码转换
}else{
$search=urlencode($search);
}
if($v000001==0 or $v000001==''){
$v000007 = "http://www.google.com.hk/search?hl=zh-CN&q=$search&start=$start";
}else if($v000001==1){
$v000007 = "http://www.google.com.hk/search?hl=en&source=hp&q=$search&btnG=Google+Search&aq=f&aqi=&aql=&oq=&gs_rfai=&safe=off&start=$start";
}else if($v000001==2){
$v000007 = "http://www.google.com.hk/search?hl=zh-TW&safe=off&q=$search&meta=&aq=f&aqi=&aql=&oq=&gs_rfai=&start=$start";
}
$search=urldecode($search);
function v000010($v000007){
$v000011 = array(
'GET / HTTP/1.1',
'Host: www.google.com.hk',
'Accept-Encoding: gzip, deflate',
'User-Agent:Mozilla/5.0 (Windows NT 5.1; rv:5.0) Gecko/20100101 Firefox/5.0',
'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language: zh-cn,zh;q=0.5',
'Accept-Charset: GB2312,utf-8;q=0.7,*;q=0.7',
'Keep-Alive:300',
'Connection:keep-alive'
);
$v000012 = curl_init(); //初始化一个cURL会话
curl_setopt ($v000012,CURLOPT_URL,$v000007); //需要获取的URL地址,也可以在curl_init()函数中设置。
curl_setopt ($v000012,CURLOPT_RETURNTRANSFER,1); //将curl_exec()获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt ($v000012,CURLOPT_CONNECTTIMEOUT,10); //在发起连接前等待的时间,如果设置为0,则无限等待。
curl_setopt($v000012,CURLOPT_HTTPHEADER,$v000011); //一个用来设置HTTP头字段的数组。使用如下的形式的数组进行设置: array('Content-type: text/plain', 'Content-length: 100')
$v000015 = curl_exec($v000012);
return $v000015;
}
$file=v000010($v000007);
echo $file=mb_convert_encoding("$file",'GBK','UTF-8');
//$title=$search; ?>
10楼的兄弟 能否详细 说下,俺 的PHP水平太差.
这个选项是必须的.
测试下结果为空 页面空白,什么值也没返回
告诉你问题出在哪第一个 先得到google 页面获取cookie.
第二个你get参数的时候将cookie数据带上这样处理就应该可以了,自己去看怎么处理cookie吧 很简单的东西.
谢谢,我试试.
1,我试过禁止浏览器COOKIE 不行的.
2,我通过function v000010($v000007){
'Cookie: PREF=ID=a43f726c945b4686:U=954fde706d336345:FF=2:LD=zh-CN:NW=1:TM=1312939459:LM=1315186505:S=HdTe33iarK_xfFUa; NID=50=efEvRrqCIBLwKKHd2RuGf34Y4n-vFvA6Z7d7Hwe2Cxe1HhsbPITrLNVhJxwpwHcQyzR37Ggxc3l-HIe6yazTrbG1-Laq6ppUq1fsxgsL3MQ6YdUjoIHh872U-Mf0tNVy'
}
加了返回COOKIE 还是不行的.
PS:这个COOKIE我是通过火狐插件获取的
我试过了,先得到COOKIE,再去GET。
还是无法采集到内容的。
有时,采集回来的是乱码,我也看不懂是不是内容了。
http://code.google.com/apis/customsearch/v1/overview.html直接采集页面,google的改版随时可能会影响你的结果。
header("Content-type: text/html; charset=utf-8");
require('simple_html_dom.php');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.google.com/search?hl=zh-CN&biw=1366&bih=649&q=ajax&oq=ajax+comment&aq=f&aqi=g9g-m1&aql=&gs_sm=e&gs_upl=5916l9958l0l10319l16l14l1l0l0l0l267l1925l0.6.4l10l0');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 GTB5');
$htmls = curl_exec($ch);
$html = str_get_html($htmls);
foreach($html->find('div[id=search]') as $element){
$fata = $element->find('li');
foreach ($fata as $link)
echo $link->innertext.'<br />';
}
?>已测试,完美获取google搜索数据。