Comment résoudre le problème selon lequel php curl ne peut pas explorer les données
Avec le développement rapide d'Internet, la technologie des robots d'exploration est devenue de plus en plus mature. Lors du développement de robots d'exploration, php curl est un outil de robot d'exploration classique. Cependant, certains développeurs peuvent rencontrer une situation dans laquelle les données ne peuvent pas être capturées lors de l'utilisation de php curl. Que doivent-ils faire dans ce cas ? Cet article présentera quelques raisons et solutions courantes pour lesquelles php curl ne peut pas capturer de données.
1. Aucune information d'en-tête ajoutée
Presque tous les sites Web vérifieront la requête http. Si les informations d'en-tête sont manquantes, l'accès est susceptible d'être refusé par le serveur. La solution consiste à définir les informations d'en-tête dans php curl. Vous pouvez utiliser la fonction curl_setopt pour le définir, comme suit :
$header = array( 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3' ); curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
2 Saut non traité
Lors de l'utilisation de php curl pour explorer des pages Web, certains sites Web sauteront à ce stade. time, curl L'opération sera terminée par défaut. La solution consiste à ajouter l'option CURLOPT_FOLLOWLOCATION, comme suit :
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
3. Cookies non traités
De nombreux sites Web utiliseront des cookies pour enregistrer le comportement des utilisateurs. le robot d'exploration Il peut y avoir des problèmes avec le contenu. La solution consiste à utiliser la fonction curl_setopt pour définir les options CURLOPT_COOKIEFILE et CURLOPT_COOKIEJAR, comme suit :
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
où $cookie est un chemin de fichier utilisé pour stocker les cookies non expirés.
4. Le délai d'attente n'est pas défini
Lors de l'exploration d'une page Web, si le temps de réponse du serveur est trop long, php curl peut être en état d'attente. Pour éviter cette situation, vous pouvez utiliser la fonction curl_setopt pour définir les options CURLOPT_TIMEOUT et CURLOPT_CONNECTTIMEOUT, comme suit :
curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
Parmi elles, l'option CURLOPT_TIMEOUT représente le délai d'expiration de l'intégralité de la requête, en secondes ; L'option représente le délai d'expiration de la connexion au serveur. Temps en secondes.
5. Ne pas utiliser le bon proxy
Certains sites Web restreindront les requêtes provenant de la même adresse IP afin d'empêcher l'accès des robots. La solution est d'utiliser un proxy. Utilisez la fonction curl_setopt pour définir les options CURLOPT_PROXY et CURLOPT_PROXYPORT, comme suit :
curl_setopt($ch, CURLOPT_PROXY, '代理服务器地址'); curl_setopt($ch, CURLOPT_PROXYPORT, '代理服务器端口');
6 La vérification SSL n'est pas activée
Certains sites Web doivent utiliser le protocole de cryptage SSL. pour la transmission des données. Si SSL n'est pas activé, vérifiez que php curl ne pourra pas capturer les données. La solution consiste à utiliser la fonction curl_setopt pour définir l'option CURLOPT_SSL_VERIFYPEER et l'option CURLOPT_SSL_VERIFYHOST, comme suit :
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
Parmi elles, l'option CURLOPT_SSL_VERIFYPEER indique s'il faut vérifier le certificat homologue, utilisez false pour indiquer de ne pas vérifier. ; l'option CURLOPT_SSL_VERIFYHOST indique s'il faut vérifier le public dans le certificat. Si le nom correspond à l'URI, utilisez false pour indiquer aucune vérification.
Ce qui précède présente quelques raisons et solutions courantes pour lesquelles php curl ne peut pas capturer de données. Lorsque nous rencontrons un échec d'exploration, nous devons résoudre le problème étape par étape et utiliser diverses méthodes pour résoudre le problème. Je crois que tant que nous continuons à travailler dur, nous pouvons maîtriser la technologie du robot d'exploration php curl et mener à bien nos tâches de développement de robots.
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!