Maison développement back-end tutoriel php Utilisez file_get_contents et curl pour écrire la collection

Utilisez file_get_contents et curl pour écrire la collection

Jul 29, 2017 pm 06:27 PM
curl file

On constate souvent que les données à utiliser se trouvent toutes sur le même site Internet, et le format de présentation des données est le même. Par exemple, il existe des milliers de produits sur Taobao ou Amazon. Si vous saisissez les informations manuellement, le résultat est le même. La charge de travail sera trop lourde. À ce stade, nous pouvons écrire un programme de collecte pour la collecter et l'afficher directement. Le serveur prend en charge file_get_contents et curl

Ajoutez d'abord une zone de texte et un bouton de soumission à la page. La zone de texte est utilisée pour saisir l'adresse de la page de collection.

La collection doit utiliser la fonction d'interception régulière

function preg_substr($start, $end, $str) // 正则截取函数      
{      
    $temp = preg_split($start, $str);      
    $content = preg_split($end, $temp[1]);      
    return $content[0];      
}
Copier après la connexion


La collection doit utiliser la fonction d'interception de chaîne

function str_substr($start, $end, $str) // 字符串截取函数      
{      
    $temp = explode($start, $str, 2);      
    $content = explode($end, $temp[1], 2);      
    return $content[0];      
}
Copier après la connexion


Il existe également une fonction pour enregistrer le contenu collecté :

function writelog($str)
{
@unlink("log.txt");
$open=fopen("log.txt","a" );
fwrite($open,$str);
fclose($open);
}
Copier après la connexion

Parfois, le contenu collecté est incohérent avec le contenu que nous visualisons via le navigateur, ce qui nous empêche de trouvez l'expression régulière correcte, ici vous pouvez ouvrir le fichier txt enregistré et y trouver la chaîne interceptée correcte.


Si vous avez besoin de collecter des images, vous devez utiliser la fonction image :

function getImage($url, $filename='', $dirName, $fileType, $type=0)
{
    if($url == ''){return false;}
    //获取文件原文件名
    $defaultFileName = basename($url);
    //获取文件类型
    $suffix = substr(strrchr($url,'.'), 1);
    if(!in_array($suffix, $fileType)){
        return false;
    }
    //设置保存后的文件名
    $filename = $filename == '' ? time().rand(0,9).'.'.$suffix : $defaultFileName;
          
    //获取远程文件资源
    if($type){
        $ch = curl_init();
        $timeout = 5;
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
        $file = curl_exec($ch);
        curl_close($ch);
    }else{
        ob_start();
        readfile($url);
        $file = ob_get_contents();
        ob_end_clean();
    }
    //设置文件保存路径
    $dirName = $dirName.'/'.date('Y', time()).'/'.date('m', time()).'/'.date('d',time()).'/';
    if(!file_exists($dirName)){
        mkdir($dirName, 0777, true);
    }
    //保存文件
    $res = fopen($dirName.$filename,'a');
    fwrite($res,$file);
    fclose($res);
    return $dirName.$filename;
}
Copier après la connexion

Ajoutez le code de collection, car ajouter le code de collection ici ne permet pas la soumission, directement au-dessus de l'image ;

Prenons comme exemple une page produit sur Amazon : saisissez un lien produit :

Regardez les résultats de la collecte comme indiqué ci-dessous uniquement. est affiché ici. Il est relativement simple de l'ajouter à la base de données. Maintenant, je vais présenter la collection de liens de saisie automatique de niveau inférieur ou de rotation automatique des pages lorsque j'ai le temps.

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 de ce site Web
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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment réaliser la conversion mutuelle entre les requêtes CURL et python en python Comment réaliser la conversion mutuelle entre les requêtes CURL et python en python May 03, 2023 pm 12:49 PM

Comment réaliser la conversion mutuelle entre les requêtes CURL et python en python

Tutoriel sur la mise à jour de la version curl sous Linux ! Tutoriel sur la mise à jour de la version curl sous Linux ! Mar 07, 2024 am 08:30 AM

Tutoriel sur la mise à jour de la version curl sous Linux !

Poésie aléatoire d'application native Hongmeng Poésie aléatoire d'application native Hongmeng Feb 19, 2024 pm 01:36 PM

Poésie aléatoire d'application native Hongmeng

Utilisez la fonction File.length() de Java pour obtenir la taille du fichier Utilisez la fonction File.length() de Java pour obtenir la taille du fichier Jul 24, 2023 am 08:36 AM

Utilisez la fonction File.length() de Java pour obtenir la taille du fichier

Sortie de PHP8.1 : introduction de curl pour le traitement simultané de plusieurs requêtes Sortie de PHP8.1 : introduction de curl pour le traitement simultané de plusieurs requêtes Jul 08, 2023 pm 09:13 PM

Sortie de PHP8.1 : introduction de curl pour le traitement simultané de plusieurs requêtes

Comment convertir un blob php en fichier Comment convertir un blob php en fichier Mar 16, 2023 am 10:47 AM

Comment convertir un blob php en fichier

Renommez les fichiers à l'aide de la fonction File.renameTo() de Java Renommez les fichiers à l'aide de la fonction File.renameTo() de Java Jul 25, 2023 pm 03:45 PM

Renommez les fichiers à l'aide de la fonction File.renameTo() de Java

Du début à la fin : Comment utiliser l'extension php cURL pour effectuer des requêtes HTTP Du début à la fin : Comment utiliser l'extension php cURL pour effectuer des requêtes HTTP Jul 29, 2023 pm 05:07 PM

Du début à la fin : Comment utiliser l'extension php cURL pour effectuer des requêtes HTTP

See all articles