博主信息
Victor的博客
博文
35
粉絲
0
評論
0
訪問量
7945
積分:0
P豆:76

php-爬蟲練習:抓取京東商品列表與詳情-2019年10月18日

2019年10月21日 18:50:50閱讀數:740博客 / Victor的博客 / PHP

10月18日

使用PHP抓取函數,練習從京東商城獲得商品列表和詳情信息。

實例分析:

1、京東為開發者提供開放的接口平臺(宙斯),獲得授權的用戶可以從平臺接口中獲得所有關心的數據,可參考這里:http://open.jd.com/home/home#/doc/common?listId=892

2、本例中沒有使用授權,僅從單一的一個接口中獲得商品列表和相關信息。小范圍抓取數據。

3、抓取前準備:

  • a、從京東頁面中找到某類產品的分類接口,在本例中,我設定的產品是“手機自營”

  • b、建立數據表,本例中為省事,直接打印到屏幕了

  • c、將課堂所講的公共函數、配置方法和數據庫操作方法,整合到一個抓取類中,本例中是CurlSpider

  • e、編寫代碼開始抓取數據,代碼如下:(抓取數據太多,只取第一頁)

實例
<?php

include 'spider.class.php';
//構造接口地址
$url = "https://search-x.jd.com/Search";
$params = array(
	"callback" => 'jQuery6105339',
	"area" => '5',
	"enc" => 'utf-8',
	"keyword" => '手機自營',
	"adType" => '7',
	"page" => '1',
	"ad_ids" => '291:19',
	"xtest" => 'new_search',
	"_" => '1571621477591',
);
$paramstring = http_build_query($params);

//實例化爬蟲類
$curlObj = new curlSpider();
//獲取接口內容
$content = $curlObj->curl_data($url, $paramstring);

//截取需要的內容
$substr = substr($content, 21, -2);
$result = json_decode($substr, true);

$flag = ['sku_id', 'ad_title', 'sku_price', 'vender_id', 'comment_num'];
// $filer = "/<([a-z]+)[^>]*>/i"; //正則過濾
$filer = "/(<([a-z]+)[^>]*>)|(<([\/][a-z]+)[^>]*>)/i";
echo '編號' . "\t" . '商品名稱' . "\t" . '商品價格' . "\t" . '供應商編號' . "\t" . '評論數' . "<br>";
foreach ($result as $values) {
	foreach ($values as $key => $value) {
		if (in_array($key, $flag)) {
			$$key = preg_replace($filer, "", $value);
		}
	}
	echo $sku_id ."\t". $ad_title ."\t". '¥'. $sku_price ."\t". $vender_id ."\t". $comment_num . "<br>";
}

?>
運行實例 ?
點擊 "運行實例" 按鈕查看在線實例

抓取到到原始數據如圖(展開其中一項):

zhuquonelog.jpg

經過簡單加工,提取需要的幾個信息后,輸出如下圖:

spiderList.jpg

總結:

簡單了解了PHP爬蟲的編寫過程,要想掌握,還需要學習很多知識;

初學主要關注的是前面接口分析、連接的設計和后期字符的處理。






批改狀態:合格

老師批語:你是第一個交抓取成品作業的,非常不錯。

全部評論

文明上網理性發言,請遵守新聞評論服務協議

條評論
暫無評論暫無評論!
  • 第十期線上培訓班 白小姐救世民彩图2019