


Pertempuran crawler praktikal: Gunakan PHP untuk merangkak maklumat produk JD.com
Dalam era e-dagang hari ini, JD.com, sebagai salah satu syarikat e-dagang komprehensif terbesar di China, malah boleh meletakkan berpuluh-puluh ribu produk di raknya setiap hari. Bagi majoriti pengguna, JD.com menyediakan pelbagai pilihan produk dan konsesi harga yang berfaedah. Walau bagaimanapun, kadangkala, kita perlu mendapatkan maklumat produk JD secara berkelompok, menyaring dengan cepat, membandingkan, menganalisis, dsb. Pada masa ini, kita perlu menggunakan teknologi crawler. Dalam artikel ini, kami akan memperkenalkan pelaksanaan menggunakan bahasa PHP untuk menulis perangkak untuk membantu kami merangkak maklumat produk JD.com dengan cepat.
- Persediaan
Pertama, kita perlu memasang sambungan curl yang diperlukan oleh PHP dan menetapkan beberapa pembolehubah yang biasa digunakan. Langkah-langkah khusus adalah seperti berikut:
Pertama, buka terminal atau powershell dan masukkan arahan berikut untuk memasang pakej sambungan curl:
sudo apt-get install php7.0-curl //ubuntu系统安装
Seterusnya, kita perlu menetapkan beberapa pembolehubah mudah dalam Kod PHP untuk memudahkan kami digunakan dalam kod berikutnya. Sebagai contoh, kami mentakrifkan pembolehubah $jgname untuk mewakili alamat akses JD.com, dan pembolehubah $skulist lain untuk mewakili alamat akses setiap produk. Kodnya adalah seperti berikut:
brew install curl-openssl php-curl //macOS系统安装
- Dapatkan senarai produk
Sekarang kami telah menyediakan persekitaran dan pembolehubah yang diperlukan, kami boleh mula menulis perangkak kami. Pertama, kita perlu mendapatkan senarai produk halaman produk JD sasaran. Kita boleh menggunakan alat curl dan ungkapan biasa untuk mendapatkan pautan sasaran berdasarkan alamat akses halaman produk JD (iaitu $jgname). Dapatkan maklumat produk seperti harga, bilangan ulasan, nama produk, nombor produk, dsb.
Kod khusus adalah seperti berikut:
$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";
Dalam kod di atas, kami menyimpan pautan dan nombor setiap produk yang diperolehi dalam $goods'skuid' dan 'link', dan Maklumat berguna lain (harga, bilangan ulasan, dll.) diletakkan dalam tatasusunan $barang. Akhir sekali, ia ditambah kepada tatasusunan $goodsinfo melalui fungsi array_push(). Anda boleh menggunakan penyataan gelung untuk mengeluarkan maklumat senarai produk untuk melihat hasil merangkak dengan mudah.
- Dapatkan butiran produk
Sekarang kami telah memperoleh maklumat senarai produk di halaman senarai produk JD, langkah seterusnya ialah mendapatkan maklumat terperinci setiap produk , dan simpan dalam susunan $goods. Kami telah memperoleh nombor dan pautan setiap produk dalam tatasusunan $goods dalam langkah sebelumnya. Oleh itu, langkah seterusnya ialah membuka setiap pautan untuk mendapatkan pelbagai maklumat produk yang berguna. Kod khusus adalah seperti berikut:
$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>"; }
Dalam kod ini, kami menggunakan teknik yang serupa dengan langkah 2, menggunakan alat curl untuk mendapatkan pautan terperinci setiap produk, dan kemudian menggunakan ungkapan biasa untuk mendapatkan beberapa produk yang berguna maklumat . Kami boleh mengeluarkan butiran produk yang diperoleh dengan cara berikut:
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]; } }
Itu sahaja untuk keseluruhan proses. Dalam aplikasi sebenar, kami boleh membuat beberapa pelarasan dan pengoptimuman pada kod berdasarkan keperluan sebenar, seperti menambah pengendalian pengecualian, menetapkan pengepala permintaan, melaraskan kelajuan merangkak, dsb. Ringkasnya, atas dasar ini, perangkak yang stabil dan cekap boleh dibina untuk mendapatkan maklumat produk JD dan seterusnya membantu operasi dan analisis e-dagang.
Atas ialah kandungan terperinci Pertempuran crawler praktikal: Gunakan PHP untuk merangkak maklumat produk JD.com. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

Jika anda seorang pembangun PHP yang berpengalaman, anda mungkin merasakan bahawa anda telah berada di sana dan telah melakukannya. Anda telah membangunkan sejumlah besar aplikasi, menyahpenyahpepijat berjuta-juta baris kod dan mengubah suai sekumpulan skrip untuk mencapai op

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

JWT adalah standard terbuka berdasarkan JSON, yang digunakan untuk menghantar maklumat secara selamat antara pihak, terutamanya untuk pengesahan identiti dan pertukaran maklumat. 1. JWT terdiri daripada tiga bahagian: header, muatan dan tandatangan. 2. Prinsip kerja JWT termasuk tiga langkah: menjana JWT, mengesahkan JWT dan muatan parsing. 3. Apabila menggunakan JWT untuk pengesahan di PHP, JWT boleh dijana dan disahkan, dan peranan pengguna dan maklumat kebenaran boleh dimasukkan dalam penggunaan lanjutan. 4. Kesilapan umum termasuk kegagalan pengesahan tandatangan, tamat tempoh, dan muatan besar. Kemahiran penyahpepijatan termasuk menggunakan alat debugging dan pembalakan. 5. Pengoptimuman prestasi dan amalan terbaik termasuk menggunakan algoritma tandatangan yang sesuai, menetapkan tempoh kesahihan dengan munasabah,

Rentetan adalah urutan aksara, termasuk huruf, nombor, dan simbol. Tutorial ini akan mempelajari cara mengira bilangan vokal dalam rentetan yang diberikan dalam PHP menggunakan kaedah yang berbeza. Vokal dalam bahasa Inggeris adalah a, e, i, o, u, dan mereka boleh menjadi huruf besar atau huruf kecil. Apa itu vokal? Vokal adalah watak abjad yang mewakili sebutan tertentu. Terdapat lima vokal dalam bahasa Inggeris, termasuk huruf besar dan huruf kecil: a, e, i, o, u Contoh 1 Input: String = "TutorialSpoint" Output: 6 menjelaskan Vokal dalam rentetan "TutorialSpoint" adalah u, o, i, a, o, i. Terdapat 6 yuan sebanyak 6

Mengikat statik (statik: :) Melaksanakan pengikatan statik lewat (LSB) dalam PHP, yang membolehkan kelas panggilan dirujuk dalam konteks statik dan bukannya menentukan kelas. 1) Proses parsing dilakukan pada masa runtime, 2) Cari kelas panggilan dalam hubungan warisan, 3) ia boleh membawa overhead prestasi.

Apakah kaedah sihir PHP? Kaedah sihir PHP termasuk: 1. \ _ \ _ Membina, digunakan untuk memulakan objek; 2. \ _ \ _ Destruct, digunakan untuk membersihkan sumber; 3. \ _ \ _ Call, mengendalikan panggilan kaedah yang tidak wujud; 4. \ _ \ _ Mendapatkan, melaksanakan akses atribut dinamik; 5. \ _ \ _ Set, melaksanakan tetapan atribut dinamik. Kaedah ini secara automatik dipanggil dalam situasi tertentu, meningkatkan fleksibiliti dan kecekapan kod.
