PHP CURL采集百度搜寻结果图片不显示问题的解决方法

2018-09-07 17:17

阅读:224

  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采集百度搜寻结果图片不显示问题的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!


评论


亲,登录后才可以留言!