Maison  >  Article  >  développement back-end  >  Que faire si php collecte les images de l'article mais ne les affiche pas

Que faire si php collecte les images de l'article mais ne les affiche pas

藏色散人
藏色散人original
2021-10-19 09:29:142678parcourir

Solution au problème selon lequel PHP collecte les articles et les images ne sont pas affichées : 1. Collectez les résultats de recherche Baidu en fonction de mots-clés ; 2. Convertissez le HTML collecté par lots en fonction du nom de domaine défini.

Que faire si php collecte les images de l'article mais ne les affiche pas

L'environnement d'exploitation de cet article : système Windows 7, PHP version 7.1, ordinateur DELL G3

Que dois-je faire si les images collectées par php ne s'affichent pas ?

Solution au problème selon lequel PHP CURL collecte les résultats de recherche Baidu et les images ne s'affichent pas

1. Collectez les résultats de recherche Baidu en fonction de mots-clés

Collectez les résultats de recherche Baidu en fonction de mots-clés, vous pouvez utiliser curl pour y parvenir, le code est le suivant :

<p><?php <br/>function doCurl($url, $data=array(), $header=array(), $timeout=30){<br>  $ch = curl_init();<br>  curl_setopt($ch, CURLOPT_URL, $url);<br>  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);<br>  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br>  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);<br>  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);<br>  $response = curl_exec($ch);<br>  if($error=curl_error($ch)){<br>    die($error);<br>  }<br>  curl_close($ch);<br>  return $response;<br>}<br>$wd = '仙剑奇侠传';<br>$url = 'http://www.baidu.com/s?wd='.urlencode($wd);<br>$data = array();<br>$header = array();<br>$response = doCurl($url, $data, $header, 5);<br>echo $response;<br>?><br></p>

Après l'export, il s'avère que certaines images ne peuvent pas être affichées

Que faire si php collecte les images de larticle mais ne les affiche pas

2 Analyse des raisons pour lesquelles les images collectées ne sont pas affichées

Recherchez directement dans Baidu, et la page peut. afficher des images. Utilisez Firebug pour vérifier le chemin de l'image et constater que le nom de domaine de l'image collectée est différent du nom de domaine de l'image recherchée sur Baidu.

Collectez le nom de domaine de l'image renvoyé t11.baidu.com

Que faire si php collecte les images de larticle mais ne les affiche pas

Le nom de domaine de l'image de recherche normale ss1.baidu.com

Que faire si php collecte les images de larticle mais ne les affiche pas

Affichez le code HTML de recherche collecté et normal et constatez que le js pour le nom de domaine la conversion est différente

Collection

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

Recherche normale

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

On peut donc conclure que Baidu détermine s'il est collecté en fonction de l'adresse source, de l'IP, de l'en-tête et d'autres paramètres, et renvoie différents js.

3. La solution au problème que les images ne s'affichent pas après la collecte

Faites simplement une conversion par lots du HTML collecté en fonction du nom de domaine défini.

<p><?php <br/>function doCurl($url, $data=array(), $header=array(), $timeout=30){<br>  $ch = curl_init();<br>  curl_setopt($ch, CURLOPT_URL, $url);<br>  curl_setopt($ch, CURLOPT_HTTPHEADER, $header);<br>  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);<br>  curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);<br>  curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);<br>  $response = curl_exec($ch);<br>  if($error=curl_error($ch)){<br>    die($error);<br>  }<br>  curl_close($ch);<br>  return $response;<br>}<br>// 域名转换<br>function cdomain($str){<br>  $baidu_domain = '{<br>    "http://graph.baidu.com": "https://sp0.baidu.com/-aYHfD0a2gU2pMbgoY3K",<br>    "http://p.qiao.baidu.com":"https://sp0.baidu.com/5PoXdTebKgQFm2e88IuM_a",<br>    "http://vse.baidu.com":"https://sp3.baidu.com/6qUDsjip0QIZ8tyhnq",<br>    "http://hdpreload.baidu.com":"https://sp3.baidu.com/7LAWfjuc_wUI8t7jm9iCKT-xh_",<br>    "http://lcr.open.baidu.com":"https://sp2.baidu.com/8LUYsjW91Qh3otqbppnN2DJv",<br>    "http://kankan.baidu.com":"https://sp3.baidu.com/7bM1dzeaKgQFm2e88IuM_a",<br>    "http://xapp.baidu.com":"https://sp2.baidu.com/yLMWfHSm2Q5IlBGlnYG",<br>    "http://dr.dh.baidu.com":"https://sp0.baidu.com/-KZ1aD0a2gU2pMbgoY3K",<br>    "http://xiaodu.baidu.com":"https://sp0.baidu.com/yLsHczq6KgQFm2e88IuM_a",<br>    "http://sensearch.baidu.com":"https://sp1.baidu.com/5b11fzupBgM18t7jm9iCKT-xh_",<br>    "http://s1.bdstatic.com":"https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K",<br>    "http://olime.baidu.com":"https://sp0.baidu.com/8bg4cTva2gU2pMbgoY3K",<br>    "http://app.baidu.com":"https://sp2.baidu.com/9_QWsjip0QIZ8tyhnq",<br>    "http://i.baidu.com":"https://sp0.baidu.com/74oIbT3kAMgDnd_",<br>    "http://c.baidu.com":"https://sp0.baidu.com/9foIbT3kAMgDnd_",<br>    "http://sclick.baidu.com":"https://sp0.baidu.com/5bU_dTmfKgQFm2e88IuM_a",<br>    "http://nsclick.baidu.com":"https://sp1.baidu.com/8qUJcD3n0sgCo2Kml5_Y_D3",<br>    "http://sestat.baidu.com":"https://sp1.baidu.com/5b1ZeDe5KgQFm2e88IuM_a",<br>    "http://eclick.baidu.com":"https://sp3.baidu.com/-0U_dTmfKgQFm2e88IuM_a",<br>    "http://api.map.baidu.com":"https://sp2.baidu.com/9_Q4sjOpB1gCo2Kml5_Y_D3",<br>    "http://ecma.bdimg.com":"https://ss1.bdstatic.com/-0U0bXSm1A5BphGlnYG",<br>    "http://ecmb.bdimg.com":"https://ss0.bdstatic.com/-0U0bnSm1A5BphGlnYG",<br>    "http://t1.baidu.com":"https://ss0.baidu.com/6ON1bjeh1BF3odCf",<br>    "http://t2.baidu.com":"https://ss1.baidu.com/6OZ1bjeh1BF3odCf",<br>    "http://t3.baidu.com":"https://ss2.baidu.com/6OV1bjeh1BF3odCf",<br>    "http://t10.baidu.com":"https://ss0.baidu.com/6ONWsjip0QIZ8tyhnq",<br>    "http://t11.baidu.com":"https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq",<br>    "http://t12.baidu.com":"https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq",<br>    "http://i7.baidu.com":"https://ss0.baidu.com/73F1bjeh1BF3odCf",<br>    "http://i8.baidu.com":"https://ss0.baidu.com/73x1bjeh1BF3odCf",<br>    "http://i9.baidu.com":"https://ss0.baidu.com/73t1bjeh1BF3odCf",<br>    "http://b1.bdstatic.com":"https://ss0.bdstatic.com/9uN1bjq8AAUYm2zgoY3K",<br>    "http://ss.bdimg.com":"https://ss1.bdstatic.com/5aV1bjqh_Q23odCf",<br>    "http://opendata.baidu.com":"https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv",<br>    "http://api.open.baidu.com":"https://sp0.baidu.com/9_Q4sjW91Qh3otqbppnN2DJv",<br>    "http://tag.baidu.com":"https://sp1.baidu.com/6LMFsjip0QIZ8tyhnq",<br>    "http://f3.baidu.com":"https://sp2.baidu.com/-uV1bjeh1BF3odCf",<br>    "http://s.share.baidu.com":"https://sp0.baidu.com/5foZdDe71MgCo2Kml5_Y_D3",  <br>    "http://bdimg.share.baidu.com":"https://ss1.baidu.com/9rA4cT8aBw9FktbgoI7O1ygwehsv",<br>    "http://1.su.bdimg.com":"https://ss0.bdstatic.com/k4oZeXSm1A5BphGlnYG",<br>    "http://2.su.bdimg.com":"https://ss1.bdstatic.com/kvoZeXSm1A5BphGlnYG",<br>    "http://3.su.bdimg.com":"https://ss2.bdstatic.com/kfoZeXSm1A5BphGlnYG",<br>    "http://4.su.bdimg.com":"https://ss3.bdstatic.com/lPoZeXSm1A5BphGlnYG",<br>    "http://5.su.bdimg.com":"https://ss0.bdstatic.com/l4oZeXSm1A5BphGlnYG",<br>    "http://6.su.bdimg.com":"https://ss1.bdstatic.com/lvoZeXSm1A5BphGlnYG",<br>    "http://7.su.bdimg.com":"https://ss2.bdstatic.com/lfoZeXSm1A5BphGlnYG",<br>    "http://8.su.bdimg.com":"https://ss3.bdstatic.com/iPoZeXSm1A5BphGlnYG"<br>  }';<br>  $domain = json_decode($baidu_domain, true);<br>  foreach($domain as $k=>$v){<br>    $str = str_replace($k, $v, $str);<br>  }<br>  return $str;<br>}<br>$wd = '仙剑奇侠传';<br>$url = 'http://www.baidu.com/s?wd='.urlencode($wd);<br>$data = array();<br>$header = array();<br>$response = doCurl($url, $data, $header, 5);<br>echo cdomain($response); // 调用域名转换<br>?><br></p>

Après avoir ajouté la conversion du nom de domaine, toutes les images peuvent être affichées normalement.

Que faire si php collecte les images de larticle mais ne les affiche pas

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn