Combat de robots d'exploration pratique : utilisez PHP pour explorer les informations sur les produits JD.com

PHPz
Libérer: 2023-06-13 11:12:02
original
2085 Les gens l'ont consulté

À l’ère actuelle du commerce électronique, JD.com, en tant que l’une des plus grandes sociétés de commerce électronique complètes de Chine, peut même mettre des dizaines de milliers de produits sur ses étagères chaque jour. Pour la majorité des consommateurs, JD.com propose une large gamme de sélections de produits et des réductions de prix avantageuses. Cependant, nous devons parfois obtenir des informations sur les produits JD par lots, les filtrer, les comparer, les analyser rapidement, etc. À l’heure actuelle, nous devons utiliser la technologie des robots. Dans cet article, nous présenterons l'implémentation de l'utilisation du langage PHP pour écrire un robot d'exploration afin de nous aider à explorer rapidement les informations sur les produits JD.com.

  1. Préparation

Tout d'abord, nous devons installer l'extension curl requise pour php et définir certaines variables couramment utilisées. Les étapes spécifiques sont les suivantes :

Tout d'abord, ouvrez le terminal ou PowerShell et entrez la commande suivante pour installer le package d'extension curl :

sudo apt-get install php7.0-curl //ubuntu系统安装
Copier après la connexion
brew install curl-openssl php-curl //macOS系统安装
Copier après la connexion

Ensuite, nous devons définir quelques variables simples dans le code PHP afin de pouvoir l'utiliser. dans le code suivant. Par exemple, nous définissons une variable $jgname pour représenter l'adresse d'accès de JD.com, et une autre variable $skulist pour représenter l'adresse d'accès de chaque produit. Le code est le suivant :

$jgname= "https://list.jd.com/list.html?cat=1318,1486,1490&ev=exbrand_13910&sort=sort_rank_asc&trans=1&JL=3_%E5%93%81%E7%89%8C_%E5%B0%8F%E7%B1%B3%EF%BC%88MI%EF%BC%89#J_crumbsBar";
$skulist="https://item.jd.com/1285310.html";
Copier après la connexion
  1. Obtenir la liste des produits

Maintenant que nous avons préparé l'environnement et les variables requises, nous pouvons commencer à écrire notre robot. Tout d’abord, nous devons obtenir la liste des produits de la page produit JD cible. Nous pouvons utiliser des outils curl et des expressions régulières pour obtenir le lien cible en fonction de l'adresse d'accès de la page produit JD.com (c'est-à-dire $jgname). Obtenez des informations sur le produit telles que le prix, le nombre d'avis, le nom du produit, le numéro de produit, etc.

Le code spécifique est le suivant :

$ch = curl_init();//初始化curl

curl_setopt($ch, CURLOPT_URL,$jgname);//设置url属性
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);//设置是否将curl_exec()获取的信息以字符串返回,而不是直接输出
$result = curl_exec ($ch);//执行一个curl会话
curl_close ($ch);//关闭curl会话

preg_match_all("/<li .*?</li>/", $result, $matches);//正则表达式把需要的内容取出来,即匹配<li>标签

$goodsinfo=array();//创建一个商品列表

foreach ($matches[0] as $item) {
    //获取商品信息
    preg_match("/sku="(d+)"/",$item,$skuid);
    preg_match("/标题">s{0,}([dD]+?)s{0,}</a>/",$item,$titlename);
    preg_match("/<strong>¥</strong>[s
]{0,}<i>(d+.d+)</i>/",$item,$price);
    preg_match("/<divs{0,}class="p-commit">[s
]+<strong[^>]+>(d+)/",$item,$commentnum);
    preg_match("/<as{0,}href="([dD]+?)"/",$item,$link);

    //将商品信息存储到商品列表中
    $goods=array(
         "title"=>trim($titlename[1]),
         "price"=>trim($price[1]),
         "link"=>"https:".$link[1],
         "skuid"=>trim($skuid[1]),
         "commentnum"=>trim($commentnum[1])
    );
    array_push($goodsinfo,$goods);//将商品信息添加到商品列表

    //输出测试:打印商品信息
    echo $goods['title']." ".$goods['price']." ".$goods['commentnum']." ".$goods['link']."<br>";
}
Copier après la connexion

Dans le code ci-dessus, nous stockons le lien et le numéro de chaque produit obtenu dans $goods'skuid' et 'link', et ajoutons d'autres informations utiles (prix, numéro de commentaire, etc. .) dans le tableau $goods. Enfin, il est ajouté au tableau $goodsinfo via la fonction array_push(). Vous pouvez utiliser des instructions de boucle pour générer des informations sur la liste de produits afin de faciliter la visualisation des résultats de l'analyse.

  1. Obtenir les détails du produit

Maintenant, nous avons obtenu les informations sur la liste des produits dans la page du tableau des produits JD. L'étape suivante consiste à obtenir les informations détaillées de chaque produit et à les stocker dans le tableau $goods. Nous avons obtenu le numéro et le lien de chaque produit dans le tableau $goods à l'étape précédente. Par conséquent, l’étape suivante consiste à ouvrir chaque lien pour obtenir diverses informations utiles sur le produit. Le code spécifique est le suivant :

foreach ($goodsinfo as &$goods) {
    //更新每个商品的网页链接
    $link="https://item.jd.com/".$goods['skuid'].".html";
    $goods['link']=$link;

    $canBuy=true;//官网上可以买
    //判断是否能够购买
    preg_match('/无货/',file_get_contents($link)) && ($canBuy=false);

    //利用curl工具打开网页链接,获得网页代码
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$link);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    $html = curl_exec ($ch);
    curl_close ($ch);
    //分析网页代码,使用正则表达式获取商品种类,价格,颜色,库存数量等数据,并保存
    preg_match_all('/<divs{0,}class="Ptable".*?>[s
]+<divs{0,}class="Ptable-item".*?>[s
]+([dD]*?)</div>/',$html,$items);
    preg_match_all('/<strong>商品名称</strong><em>(d.*)</em>/',$html,$item);
    $goods['title']=$item[1][0];
    echo $goods['title'];

    if($canBuy)
    {
        foreach ($items[1] as &$item) {
            //去掉html标记、空格、换行符
            $item=strip_tags($item);
            $item=str_replace(" ","",$item); 
            $item=str_replace("    ","",$item); 
            $item=str_replace("
","",$item);
            $item=str_replace("
","",$item); 

            //切割字符串,获取键值对
            preg_match_all('/([dD]*?):([dD]*?)[
]/',$item,$item2);
            if(count($item2[1])>0){
                for($i=0;$i<count($item2[1]);$i++){
                    if($item2[1][$i]=="价格"){
                        $goods['price']=$item2[2][$i];
                    }elseif($item2[1][$i]=="颜色"){
                        $goods['color']=$item2[2][$i];
                    }elseif($item2[1][$i]=="产地"){
                        $goods['producePlace']=$item2[2][$i];
                    }elseif($item2[1][$i]=="商品编号"){
                        $goods['goodsn']=$item2[2][$i];
                    }elseif($item2[1][$i]=="型号"){
                        $goods['model']=$item2[2][$i];
                    }elseif($item2[1][$i]=="商品毛重"){
                        $goods['grossWeight']=$item2[2][$i];
                    }elseif($item2[1][$i]=="规格"){
                        $goods['specifications']=$item2[2][$i];
                    }
                }
            }
        }
        //获取商品评论数
        preg_match_all('/<as{0,}href="#comment"s{0,}target="_self">s{0,}[dD]+?<strongs{0,}class="curr-num">(d*)</',$html,$comment);
        $goods['commentnum']=$comment[1][0];
    }
}
Copier après la connexion

Dans ces codes, nous utilisons une technique similaire à l'étape 2, en utilisant l'outil curl pour obtenir le lien détaillé de chaque produit, puis en utilisant des expressions régulières pour obtenir des informations utiles sur le produit. Nous pouvons afficher les détails du produit obtenus de la manière suivante :

foreach ($goodsinfo as &$goods) {
    echo $goods['skuid']." ".$goods['title']." ".$goods['price']." ".$goods['commentnum']." ".$goods['link']."<br>";
}
Copier après la connexion

C'est tout pour tout le processus. Dans les applications réelles, nous pouvons apporter quelques ajustements et optimisations au code en fonction des besoins réels, comme l'ajout de la gestion des exceptions, la définition des en-têtes de requête, l'ajustement de la vitesse d'exploration, etc. En bref, sur cette base, un robot d'exploration stable et efficace peut être construit pour obtenir des informations sur les produits JD et faciliter davantage les opérations et l'analyse du commerce électronique.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal