在當今的電商時代,京東身為中國最大的綜合電商之一,每日上架的商品數量甚至可以達到數萬種。對於廣大的消費者來說,京東提供了廣泛的商品選擇和優勢的價格優惠。但是,有些時候,我們需要批量獲取京東商品信息,快速篩選、比較、分析等等。這時候,我們就需要用到爬蟲技術了。在本篇文章中,我們將會介紹利用PHP語言編寫爬蟲,幫助我們快速爬取京東商品資訊的實作。
- 準備工作
首先,我們需要安裝php所需的curl擴展,並設定一些常用的變數。具體步驟如下:
首先,打開終端機或powershell,輸入以下命令來安裝curl擴充包:
sudo apt-get install php7.0-curl //ubuntu系统安装
brew install curl-openssl php-curl //macOS系统安装
接著,我們需要在PHP的程式碼中設定一些簡單的變量,方便我們在後續的代碼中使用。例如,我們定義一個$jgname變數表示京東的訪問位址,另一個$skulist變數表示每個商品的存取位址。程式碼如下:
$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";
- 取得商品清單
現在我們已經準備完了環境和需要的變量,我們可以開始寫我們的爬蟲了。首先,我們需要取得目標京東商品頁面的商品清單。我們可以根據,京東商品頁的存取地址(即$jgname),利用curl的工具和正規表示式來取得目標連結。分別取得價格、評論數、商品名稱、商品編號等等商品資訊。
具體程式碼如下:
$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>"; }
在上述程式碼中,我們將取得到的每個商品的連結和編號儲存在了$goods'skuid'和'link'中,並將其它有用的信息(價格,評論數等)放入$goods數組。最後,經由array_push()函數加入到$goodsinfo數組中。你可以使用循環語句來輸出商品列表訊息,以便於查看爬取結果。
- 獲取商品詳細信息
現在,我們已經獲取到了京東商品表頁中的商品列表信息,接下來的步驟就是獲取每個商品的詳細信息,並將其儲存在$goods數組中。我們在上一步的$goods數組中已經取得了每個商品的編號和連結。因此,接下來的操作就是打開每個鏈接,以獲取各種有用的商品資訊。具體代碼如下:
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]; } }
在這些代碼中,我們使用了類似於第2步的技術,利用curl工具獲得每個商品的詳細鏈接,然後利用正則表達式來獲取一些有用的商品信息。我們可以透過以下方式來輸出所獲得的商品詳細資訊:
foreach ($goodsinfo as &$goods) { echo $goods['skuid']." ".$goods['title']." ".$goods['price']." ".$goods['commentnum']." ".$goods['link']."<br>"; }
整個流程就這些了。在實際應用中,我們可以根據實際的需求對程式碼進行一些調整和最佳化,例如添加異常處理、設定請求頭、調整爬取速度等。總之,在此基礎上,可以建構一個穩定、高效的爬蟲,獲得京東商品訊息,進一步助力電商運作和分析。
以上是爬蟲實戰:用 PHP 爬取京東商品訊息的詳細內容。更多資訊請關注PHP中文網其他相關文章!

区别:1、京东自营是京东公司自己经营的店面,从品牌厂家进货到京东仓库,然后在京东平台销售给消费者;而京东官方旗舰店是各大品牌商家借助京东平台销售自家产品。2、京东自营使用京东物流,发货快;而京东官方旗舰店则是由品牌发货。3、京东自营的产品都是储存在京东自己的仓储中心里面,而京东官方旗舰店的商品是储备于商家自己的仓库里面。4、京东自营的模式是B2B和B2C,而官方旗舰店是B2C。

区别:1、淘宝网是C2C网购平台,而京东是B2C平台。2、京东采用得是价值链整合模式,淘宝则采用的是开放平台模式。3、京东采用自买自卖的模式,赚取商品中间的差价,通过低收益来获取规模化的销量;淘宝则并不参与商品的实际销售和服务,商品的销售以及服务都是由淘宝卖家直接负责的。4、京东有自己的物流平台,采用的是分布式库存管理;淘宝依赖于第三方物流平台,采用的是集约式库存管理。

京东公司全称是“北京京东世纪贸易有限公司”,是一家综合网络零售企业,公司旗下产业京东商城是中国电子商务领域最受消费者欢迎和最具有影响力的电子商务网站之一,拥有在线销售家电、数码通讯、电脑、家居百货、服装服饰、母婴、图书、食品、在线旅游等12大类数万个品牌商品。

区别:1、京东自营包括京东国际自营和京东国内商家。2、京东自营分为国内产品和国外产品,京东国际自营也是自营店,产品直接从海外采买。3、京东自营是京东集团很多子公司在京东商城平台上销售,而京东商城与京东国际自营也是一种合作关系;京东国际自营是京东集团子公司之一,是一家在境外注册的境外销售公司。

jdvc是京东快递业务。京东快递是京东物流的服务之一,其主要业务是为京东商城自营的产品进行运输配送,京东商场在全国各地都有建立保税仓,将买家的订单分配到就近的仓库,再由京东快递打包运输,一至三天即可送到。京东快递除了运输商务快递,还开通了个人运输,可以通过小程序、APP、和公众号预约下单,价格比其他快递公司更便宜,大约2~3天左右即可送货上门。

京东不可以用支付宝支付,在京东的支付界面“京东收银台”中没有“支付宝”的付款渠道,因为京东和支付宝并没有支付合作关系。京东支持的付款方式有:微信支付、云闪付、银行卡支付、货到付款、微信好友代付。

在当今的电商时代,京东作为中国最大的综合电商之一,每日上架的商品数量甚至可以达到数万种。对于广大的消费者来说,京东提供了广泛的商品选择和优势的价格优惠。但是,有些时候,我们需要批量获取京东商品信息,快速筛选、比较、分析等等。这时候,我们就需要用到爬虫技术了。在本篇文章中,我们将会介绍利用PHP语言编写爬虫,帮助我们快速爬取京东商品信息的实现。准备工作首先,我

京东在线配镜流程是:1、挑选镜架;2、挑选镜片;3、定制镜片;4、确认订单;5、支付订单;6、等待配送;7、验货与试戴;8、确认收货。在配镜前最好先去医院或专业的眼镜店进行验光,了解自己的近视度数和瞳距等信息,以便选择合适的镜片参数。京东的配镜服务可能会有所不同,具体流程和价格等信息可以在其官方网站上查询。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器