PHP获取关键词的百度排名,file_get_contents老提示failed to open stream: HTTP request failed!请问如何解决,看了好多网上资料,配置php.in还是不行
下面是我从网上找到的一段代码
<?php function getbaiduRank($key,$weburl)//关键词,网址 { //$newkey = iconv ('utf-8','gb2312',$key); $newkey =$key; $newkey = urlencode($newkey); $url = "http://www.baidu.com/s?ie=gb2312&wd=$newkey&rn=30"; $content = str_replace('<table border="0" cellpadding="0" cellspacing="0"', '<table cellpadding="0" cellspacing="0"',file_get_contents($url)); $arr = array(); $arr = explode ('class=m>推广',$content);//排除推广 $shuliang=count($arr); //print_r ($arr[$shuliang-1]); $arr = explode ('<br clear=all>',$arr[$shuliang-1]);//去除尾部 $arr = explode ('<table cellpadding="0" cellspacing="0" id="',$arr[0]); $shuliang=count($arr); $paiming=0; for ($i=1;$i<$shuliang;$i++){if (strpos($arr[$i],$weburl)>0) {$paiming=$i;break;}} echo "关键词:".urldecode($newkey)."|网站:".$weburl."百度排名:".$paiming; } getbaiduRank('oscphp','http://www.oscphp.com'); ?>
运行后就报错
Warning: file_get_contents(http://www.baidu.com/s?ie=gb2312&wd=oscphp&rn=30): failed to open stream: HTTP request failed! in E:\xampp\htdocs\ceshi.php on line 8 关键词:oscphp|网站:http://www.oscphp.com百度排名:0
用curl<spanstyle="font-family:微软雅黑,Verdana,sans-serif,宋体;font-size:14px;line-height:normal;background-color:#F9F9F9;">你要是抓取数据的话,最好用curl,file_get_contents不太适合你说的这种场合,比较适合读取本地文件
file_get_contents函数运行不正常的话检查下服务器的网络配置
例如防火墙 网卡什么的..
以前碰到过双网卡配置不当导致的file_get_contents函数出现你这样的错误
file_get_contents本来就不是设计来获取网上的数据的
curl更适合你的要求
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。