php采集文章图片不显示怎么办

本文操作环境:windows7系统、PHP7.1版、DELL G3电脑

php采集文章图片不显示怎么办?

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

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

根据关键字采集百度搜寻结果,可以使用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 = 'http://www.baidu.com/s?wd='.urlencode($wd);
$data = array();
$header = array();
$response = doCurl($url, $data, $header, 5);
echo $response;
?>

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

这里写图片描述

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

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

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

这里写图片描述

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

这里写图片描述

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

采集

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",
};

正常搜寻

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。

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

把采集到的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 = '{
"http://graph.baidu.com": "https://sp0.baidu.com/-aYHfD0a2gU2pMbgoY3K",
"http://p.qiao.baidu.com":"https://sp0.baidu.com/5PoXdTebKgQFm2e88IuM_a",
"http://vse.baidu.com":"https://sp3.baidu.com/6qUDsjip0QIZ8tyhnq",
"http://hdpreload.baidu.com":"https://sp3.baidu.com/7LAWfjuc_wUI8t7jm9iCKT-xh_",
"http://lcr.open.baidu.com":"https://sp2.baidu.com/8LUYsjW91Qh3otqbppnN2DJv",
"http://kankan.baidu.com":"https://sp3.baidu.com/7bM1dzeaKgQFm2e88IuM_a",
"http://xapp.baidu.com":"https://sp2.baidu.com/yLMWfHSm2Q5IlBGlnYG",
"http://dr.dh.baidu.com":"https://sp0.baidu.com/-KZ1aD0a2gU2pMbgoY3K",
"http://xiaodu.baidu.com":"https://sp0.baidu.com/yLsHczq6KgQFm2e88IuM_a",
"http://sensearch.baidu.com":"https://sp1.baidu.com/5b11fzupBgM18t7jm9iCKT-xh_",
"http://s1.bdstatic.com":"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K",
"http://olime.baidu.com":"https://sp0.baidu.com/8bg4cTva2gU2pMbgoY3K",
"http://app.baidu.com":"https://sp2.baidu.com/9_QWsjip0QIZ8tyhnq",
"http://i.baidu.com":"https://sp0.baidu.com/74oIbT3kAMgDnd_",
"http://c.baidu.com":"https://sp0.baidu.com/9foIbT3kAMgDnd_",
"http://sclick.baidu.com":"https://sp0.baidu.com/5bU_dTmfKgQFm2e88IuM_a",
"http://nsclick.baidu.com":"https://sp1.baidu.com/8qUJcD3n0sGCo2Kml5_Y_D3",
"http://sestat.baidu.com":"https://sp1.baidu.com/5b1ZeDe5KgQFm2e88IuM_a",
"http://eclick.baidu.com":"https://sp3.baidu.com/-0U_dTmfKgQFm2e88IuM_a",
"http://api.map.baidu.com":"https://sp2.baidu.com/9_Q4sjOpB1gCo2Kml5_Y_D3",
"http://ecma.bdimg.com":"https://ss1.bdstatic.com/-0U0bXSm1A5BphGlnYG",
"http://ecmb.bdimg.com":"https://ss0.bdstatic.com/-0U0bnSm1A5BphGlnYG",
"http://t1.baidu.com":"https://ss0.baidu.com/6ON1bjeh1BF3odCf",
"http://t2.baidu.com":"https://ss1.baidu.com/6OZ1bjeh1BF3odCf",
"http://t3.baidu.com":"https://ss2.baidu.com/6OV1bjeh1BF3odCf",
"http://t10.baidu.com":"https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq",
"http://t11.baidu.com":"https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq",
"http://t12.baidu.com":"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq",
"http://i7.baidu.com":"https://ss0.baidu.com/73F1bjeh1BF3odCf",
"http://i8.baidu.com":"https://ss0.baidu.com/73x1bjeh1BF3odCf",
"http://i9.baidu.com":"https://ss0.baidu.com/73t1bjeh1BF3odCf",
"http://b1.bdstatic.com":"https://ss0.bdstatic.com/9uN1bjq8AAUYm2zgoY3K",
"http://ss.bdimg.com":"https://ss1.bdstatic.com/5aV1bjqh_Q23odCf",
"http://opendata.baidu.com":"https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv",
"http://api.open.baidu.com":"https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv",
"http://tag.baidu.com":"https://sp1.baidu.com/6LMFsjip0QIZ8tyhnq",
"http://f3.baidu.com":"https://sp2.baidu.com/-uV1bjeh1BF3odCf",
"http://s.share.baidu.com":"https://sp0.baidu.com/5foZdDe71MgCo2Kml5_Y_D3",
"http://bdimg.share.baidu.com":"https://ss1.baidu.com/9rA4cT8aBw9FktbgoI7O1ygwehsv",
"http://1.su.bdimg.com":"https://ss0.bdstatic.com/k4oZeXSm1A5BphGlnYG",
"http://2.su.bdimg.com":"https://ss1.bdstatic.com/kvoZeXSm1A5BphGlnYG",
"http://3.su.bdimg.com":"https://ss2.bdstatic.com/kfoZeXSm1A5BphGlnYG",
"http://4.su.bdimg.com":"https://ss3.bdstatic.com/lPoZeXSm1A5BphGlnYG",
"http://5.su.bdimg.com":"https://ss0.bdstatic.com/l4oZeXSm1A5BphGlnYG",
"http://6.su.bdimg.com":"https://ss1.bdstatic.com/lvoZeXSm1A5BphGlnYG",
"http://7.su.bdimg.com":"https://ss2.bdstatic.com/lfoZeXSm1A5BphGlnYG",
"http://8.su.bdimg.com":"https://ss3.bdstatic.com/iPoZeXSm1A5BphGlnYG"
}';
$domain = JSON_decode($baidu_domain, true);
foreach($domain as $k=>$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, $data, $header, 5);
echo cdomain($response); // 调用域名转换
?>

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

这里写图片描述

--结束END--

本文标题: php采集文章图片不显示怎么办

本文链接: https://www.lsjlt.com/news/347.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

  • php采集文章图片不显示怎么办

    php采集文章图片不显示的解决办法:1、根据关键字采集百度搜寻结果;2、把采集到的html,根据定义的域名做一次批量转换即可。
    阅读数:148 php
  • php 换行不显示怎么办

    php换行不显示是因为“<br/>”是HTML代码,“\n”是ASCII码,而浏览器解析的是HTML码,不是ASCII码,所以使用“\n”换行是不起作用的,其解决办法就是换成“<br/>”即可。
    阅读数:477 php
  • php写图片不显示不出来怎么办

    php写图片不显示不出来的解决办法:1、找到并打开php.ini文件;2、找到“extension=php_gd2.dll”,并将前面的分号去掉;3、重新启动服务器;4、在绘图前清一下缓存即可。
    阅读数:762 图片 php
  • php网页内容不显示怎么办

    php网页内容不显示的解决方法:1、打开php.ini配置文件;2、取消error_reporting的注释,将其设置为【error_reporting=E_ALL&~E_NOTICE】;3、重启服务器。
    阅读数:218 php 网页
  • php.ini 不显示错误怎么办

    php.ini不显示错误的设置方法:1、找到并打开php.ini文件;2、通过设置“display_errors = Off”来屏蔽错误即可。
    阅读数:384 php.ini
  • php -v不显示php版本号怎么办

    解决步骤:1、鼠标右击“计算机”图标,在打开的菜单中选择“属性”;2、在打开的“系统”界面中,点击“高级系统设置”;3、在弹出的“系统属性”窗口中,点击“环境变量”按钮;4、在弹出的“环境变量”窗口中,选中“系统变量”区域的“Path”变量,点击“编辑”按钮;5、在“编辑系统变量”弹窗中,将PHP的安装路径添加到“变量值”中,点击“确定”按钮即可。本教程操作环境:windows7系统、php5.5.
    阅读数:175 php
  • php获取文件夹里的图片不显示怎么办

    php获取文件夹里的图片不显示的解决办法:1、通过readfile或者get_file_contents读取图片;2、修改HTML代码如“var pic="{:url('/home/showPics')}"+'?pic='+item;”。
    阅读数:608 php 图片
  • php获取输入内容中文不显示不出来怎么办

    php获取输入内容中文不显示不出来的解决办法:1、打开相应的php文件;2、通过添加“setlocale(LC_ALL,NULL);”语句把地区信息设置为系统默认即可。
    阅读数:514 php
  • php怎么设置不显示notice warning

    php设置不显示notice warning的方法:1、通过“ini_set("display_errors", 0);”屏蔽错误;2、打开php.ini文件,将“display_errors”的值从on改成off即可。
    阅读数:897 php
  • php 怎么设置不显示版本信息

    php设置不显示版本信息的方法:1、找到php.ini文件;2、将默认的“expose_php = On”修改为“expose_php = Off”;3、重启apache即可。
    阅读数:553 php
  • php中含有汉字不显示怎么解决

    解决方法:1、用“header("Content-type:text/html;charset:utf-8")”将页面的编码格式设置为“utf-8”;2、修改“php.ini”文件中“default_charset”的内容为“UTF-8”。
    阅读数:337 PHP
  • php图片显示一片乱码怎么办

    php图片显示一片乱码的解决办法:1、打开相应的PHP代码文件;2、在页面头部加上“header("Content-Type:image/jpg");”代码声明图片类型即可。
    阅读数:183 php
  • php的debug显示不全怎么办

    php的debug显示不全的解决办法:1、找到php.ini文件;2、在xdebug节点中加入“xdebug.var_display_max_children=128...”;3、重启PHP服务即可。
    阅读数:718 php debug
  • php imagepng无法显示怎么办

    php imagepng无法显示的解决办法:1、用第三方编码工具把文件格式保存为无BOM的utf-8格式;2、利用“ob_clean();”清空缓冲区。
    阅读数:277 php imagepng
  • php时间显示不正确怎么办

    php时间显示不正确的解决办法:1、在添加时间前插入“date_default_timezone_set(PRC);”;2、输出“date("Y-m-d H:i:s", time()+8*60*60);”;3、修改“php.ini”文件的内容为“date.timezone = PRC”即可。
    阅读数:220 php
  • php 留言板显示乱码怎么办

    php留言板显示乱码的解决办法:1、检查并修改网页头编码为UTF8;2、将数据库存储的编码修改为UTF8;3、执行“mysql_query("set character set UTF8");”语句即可。
    阅读数:519 乱码 php
  • php不能处理太大图片怎么办

    php不能处理太大图片的解决办法:1、对PHP的内存分配大小进行调整,代码如“ini_set("memory_limit", "512M");”;2、修改安全限制。
    阅读数:102 php
  • php合成图片出现乱码怎么办

    php合成图片出现乱码的解决办法:1、打开相应的PHP生成图片的代码;2、通过添加“ob_end_clean()”在header函数前清空缓存数据即可。
    阅读数:954 php 乱码
  • php 无法上传大图片怎么办

    php无法上传大图片的解决办法:1、打开php.ini;2、查找post_max_size并设置为自己需要的值;3、确认“file_uploads = on”;4、设置一个有效目录;5、设置允许上传文件大小的最大值。
    阅读数:529 php
  • 命令行显示php不是内部命令怎么办

    命令行显示php不是内部命令的解决办法:1、鼠标右键点击计算机,选择“属性”;2、找到并选择“环境变量”;3、在系统变量中找到“Path”变量;4、输入PHP的所在目录即可。
    阅读数:507 php