为了账号安全,请及时绑定邮箱和手机立即绑定

如何获得百度搜索列表页

如何获得百度搜索列表页

PHP
feibenren 2016-04-12 15:43:26
先说一下简单情况老大给了我一个任务,让我开发一个小工具,输入域名和搜索关键词,就可以查询出该域名在百度的第几页,第一个说白了就是查询网站的排名,我们主要做的医疗行业的竞价站,所以我们的网站一般都是推广的网站,那么这个排名就是推广区域的排名了刚开始做,很简单的一个想法,百度地址带上参数不久可以file_get_contents了嘛,但是百度远远比我想象的要复杂的多第一:https,file_get_content不能获取htts的网页,那么没办法,只能用curl了,这个问题我解决了。第二:百度搜索链接的参数问题,百度搜索的时候,参数太多太多了,简单起见,我就只加了一个参数wd(该参数表示搜索的关键词),当然还有很多关键词,网上查了一下,感觉加入我第一次搜索的的话,不知道带不带这个参数有没有用,或者有没有必要,但是测试了一下,比如ie=utf-8加上或者不加上,结果都是一样的,但是又担心某些参数加入不加的话,比如相关推荐的的部分又给我显示不一样,那样我就无法真实模拟了第三:相同关键词搜索两次,出现的相关推荐模块的内容竟然不一样,这个好理解,但是问题就出在这里了,假如我curl抓取的页面不和浏览器出现的结果一致的话(特制相关推荐部分),那么这个抓取就没有任何意义了,这个地方我搞不清楚是我哪个地方的问题,是curl的配置问题,还是百度参数的问题<?php //https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=0&rsv_idx=1&tn=baidu&wd=%E4%B8%8D%E5%AD%95%E4%B8%8D%E8%82%B2&rsv_pq=bb089c9f00001428&rsv_t=1d5eARXSTXIoi6snu5z3c1ZApR0ixj%2BQMeVimrCU1A3rMWZfYpH8AePsP38&rsv_enter=1&rsv_sug3=1&rsv_sug1=1&rsv_sug7=001&rsv_sug2=1&rsp=0&rsv_sug9=es_1_1&rsv_sug4=3591&rsv_sug=5 $url='https://www.baidu.com/s'; $wd=$_GET['wd']; $params=array( 'wd'=>urlencode($wd),//搜索关键词 //'pn'=>10,//页码 'ie'=>'utf-8',//查询输入文字的编码(Input Encoding)缺省设置ie=gb2312,即为简体中文  'f'=>'8',//form:形式(1,3,8) 也许还有其他的,暂时发现就这3种,1:相关搜索,表示用户选择了搜索页面最下面的“相关搜索”中的某个关键词。;3下拉框搜索 表示用户输入一定的词语之后出现“联想词语”,用户最终用鼠标选择了某个关键词;或用键盘选择了某个关键词后直接按回车。;8用户自主搜索,表示用户直接点击“百度一下”按键(有bs变量时才出现f=8) 'rsv_bp'=>'0',//(0,1,2) 0是首页输入;1是顶部搜索输入;2是底部搜索输入 //'rsv_idx'=>'1', 'tn'=>'baidu',//提交搜索请求的来源站点 //'oq'=>'baidu',//指的是你在输入搜索词时,输入一半,选择了下拉框之前输入的词;oq= 指的是搜索词,只有当url地址出现rsp而非rsv_bp时,oq才指的是从搜索词跳转到相关搜索。 //'rsv_pq'=>'baidu',//是用来记录关键词和上一次搜素的关键词(相关关键词)的,需要解码 //'rsv_t'=>'baidu', //'rsv_enter'=>'baidu', 'inputT'=>'1625',//从你打开百度主页,在对话框输入数据的时候开始计时,到你点击百度一下的时间计算。(只有在顶部搜索,首页搜索才会出现)。 //'rsv_sug3'=>'38',//键盘重复速度(Keyboard Repeat Speed) //'rsv_sug1'=>'8',//搜索框提示次数 //'rsv_sug7'=>'100', //'sug'=>'baidu',//这个参数只有在你修改下拉框文字时才会出现,指的是下拉框出现的关键词 //'rsv_n'=>'baidu', //其他输入搜索词方式,当用户使用键盘选择了下拉框提示词到搜索框中,觉得不满意,修改字符串后再执行搜索,百度将这种行为定义为 rsv_n=1,rsv_n=2,指的是从剪贴板粘贴搜索词。这只需要做一个试验就能证明,复制一段文字到百度搜索框内,百度一下就会出现 rsv_n=2。 //'rs_src'=>'1'//当用户按“百度一下”后会自动生成相关搜索,在相关搜索的源代码可以看到相关搜索_语义关联性和其他几个参数。 相关搜索_语义关联性参数值一般为0,即rs_src=0与原先查询字符串(original queryString)语义关联性较高。如果某个相关搜索候选词语义与原先查询字符串关联性较弱,则rs_src=1 ); $url=combine($url, $params); // echo $url;die; // curl_get($url); $data=file_get_contents($url); file_put_contents('./test.html', $data); /**  * url地址拼装  * @param unknown $url  * @param unknown $data 数组  */ function combine($url,$data){ $url.='?'; foreach ($data as $k=>$v){ $url.=$k.'='.$v.'&'; } $url=substr($url, 0,strlen($url)-1); return $url; } function curl_get($url){ $header = array ( 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0', 'Accept:*/*', /* 'Accept-Encoding:gzip, deflate, br', 'Accept-Language:zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Connection:keep-alive', 'Cookie:BAIDUID=D963BAAC8134E09989C87C1BA53BE726:FG=1; BIDUPSID=B5BFB24A611030ECBA2E73C8B9976324; PSTM=1460431806 ; BD_HOME=0; H_PS_PSSID=18881_18285_1435_19671_19689_18205_19559_15155_12056; BD_UPN=13314352; BD_CK_SAM =1; H_PS_645EC=475ctRGJAEDm9wQj7gwZ2Bs7lbtKugCUBJL1dO97qCJJn2ckA7QZmo2%2BrTw; __bsi=1508149924235386 3151_00_0_I_R_152_0303_C02F_N_I_I_0', 'X-Requested-With: XMLHttpRequest', 'is_xhr: 1', */ ); $ch = curl_init(); curl_setopt ( $ch, CURLOPT_URL, $url); curl_setopt ( $ch, CURLOPT_HTTPHEADER, $header ); curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 0 ); //https请求设置 curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 跳过证书检查 curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 从证书中检查SSL加密算法是否存在 //其他设置 curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); // 执行 $content = curl_exec( $ch ); if ($content == FALSE) { echo "error:" . curl_error ( $ch );die; } // 关闭 curl_close ( $ch ); file_put_contents('./test.html', $content); echo $content; //输出结果 //  return $content; }-------------------------------------------------------------------------------------------------------------------------------
查看完整描述

目前暂无任何回答

  • 0 回答
  • 2 关注
  • 2129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信