PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2018-09-07 17:17
1.根据关键字采集百度搜寻结果
根据关键字采集百度搜寻结果,可以使用curl实现,代码如下:
<?php function doCurl($url, $data=array(), $header=array(), $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $response; } $wd = 仙剑奇侠传; $url =
输出后发现有部分图片不能显示
2.采集后的图片不显示原因分析
直接在百度中搜寻,页面是可以显示图片的。使用firebug查看图片路径,发现采集的图片域名与在百度搜寻的图片域名不同。
查看采集与正常搜寻的html,发现有个域名转换的js是不一样的
采集
正常搜寻
因此可以断定是,百度根据来源地址、IP、header等参数,判断如果是采集的,则返回不同的js。
3.采集后图片不显示的解决方法
把采集到的html,根据定义的域名做一次批量转换即可。
<?php function doCurl($url, $data=array(), $header=array(), $timeout=30){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); $response = curl_exec($ch); if($error=curl_error($ch)){ die($error); } curl_close($ch); return $response; } // 域名转换 function cdomain($str){ $baidu_domain = { 仙剑奇侠传; $url = 调用域名转换 ?>
增加域名转换后,所有的图片都可以正常显示。
以上所述是小编给大家介绍的PHP CURL采集百度搜寻结果图片不显示问题的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
文章标题:PHP CURL采集百度搜寻结果图片不显示问题的解决方法
文章链接:http://soscw.com/essay/14596.html