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

前端之家收集整理的这篇文章主要介绍了PHP CURL采集百度搜寻结果图片不显示问题的解决方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

1.根据关键字采集百度搜寻结果

根据关键字采集百度搜寻结果,可以使用curl实现,代码如下:

PHP;">

输出后发现有部分图片不能显示

这里写图片描述

2.采集后的图片不显示原因分析

直接在百度中搜寻,页面是可以显示图片的。使用firebug查看图片路径,发现采集的图片域名与在百度搜寻的图片域名不同。

采集返回的图片域名 t11.baidu.com

这里写图片描述

正常搜寻的图片域名 ss1.baidu.com

这里写图片描述

查看采集与正常搜寻的html,发现有个域名转换的js是不一样的

采集

PHP;"> var list = { "graph.baidu.com": "http://graph.baidu.com","t1.baidu.com":"http://t1.baidu.com","t2.baidu.com":"http://t2.baidu.com","t3.baidu.com":"http://t3.baidu.com","t10.baidu.com":"http://t10.baidu.com","t11.baidu.com":"http://t11.baidu.com","t12.baidu.com":"http://t12.baidu.com","i7.baidu.com":"http://i7.baidu.com","i8.baidu.com":"http://i8.baidu.com","i9.baidu.com":"http://i9.baidu.com",};

正常搜寻

PHP;"> var list = { "graph.baidu.com": "https://sp0.baidu.com/-aYHfD0a2gU2pMbgoY3K","t1.baidu.com":"https://ss0.baidu.com/6ON1bjeh1BF3odCf","t2.baidu.com":"https://ss1.baidu.com/6OZ1bjeh1BF3odCf","t3.baidu.com":"https://ss2.baidu.com/6OV1bjeh1BF3odCf","t10.baidu.com":"https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq","t11.baidu.com":"https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq","t12.baidu.com":"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq","i7.baidu.com":"https://ss0.baidu.com/73F1bjeh1BF3odCf","i8.baidu.com":"https://ss0.baidu.com/73x1bjeh1BF3odCf","i9.baidu.com":"https://ss0.baidu.com/73t1bjeh1BF3odCf",};

因此可以断定是,百度根据来源地址、IP、header等参数,判断如果是采集的,则返回不同的js。

3.采集后图片不显示解决方法

把采集到的html,根据定义的域名做一次批量转换即可。

PHP;"> $v){ $str = str_replace($k,$v,$str); } return $str; } $wd = '仙剑奇侠传'; $url = 'http://www.baidu.com/s?wd='.urlencode($wd); $data = array(); $header = array(); $response = doCurl($url,5); echo cdomain($response); // 调用域名转换 ?>

增加域名转换后,所有的图片都可以正常显示

这里写图片描述

以上所述是小编给大家介绍的PHP CURL采集百度搜寻结果图片不显示问题的解决方法,希望对大家有所帮助。程序员遇到问题都会上(编程之家jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!

猜你在找的PHP相关文章