最近在做專案中要使用到快遞的物流資訊展示,當時是使用的第三方的介面快遞鳥,但是昨天發現,現在快遞鳥查詢天天快遞的物流資訊是查詢不到的。同時客戶的商品物流運輸就是使用天天快遞,這就尷尬了。同時我發現快遞網這個**是可以動態查詢物流資訊
使用快遞網請求物流資訊的方式是快遞名稱/訂單號.html,我們在專案中只要把我們的引數拼接進行去請求這個位址就可以得到物流資訊,但是顯示的是乙個頁面。
但是我們關心的也就是物流資訊,也就是頁面顯示的資料,我們並不關心其他的無用的資訊,當時我直接的想法是通過curl獲取當前頁面的資訊。
但是列印出來的內容顯示的確實「正在查詢中」
到這裡相信就會明白,當前**是通過獲取傳遞的引數又再次請求伺服器才拿到真正的物流資訊,通過開發者工具獲取當前網頁的請求,發現確實是這樣的,當前網頁會再次請求乙個位址,而返回的就是真實的物流資訊。
它在請求的位址是而得到的資料是
可以看到這就是我們真正想要的資訊,所以我們curl請求的真正位址的訂單號-快遞名稱.html,在我們寫curl的時候要模擬我們請求是從瀏覽器發出的,不然它返回的資料是不對的。也就是在curl中新增
curl_setopt ($ch, curlopt_useragent, "mozilla/4.0 (compatible; msie 6.0; windows nt 5.1; sv1)");
關於在php中使用curl傳送請求,可以看curl詳解我們得到的資料從上面可以看到是json資料,我們進行json轉陣列,轉換後的資料如圖
轉換後的資料都是乙個個物件,我們可以進行二次轉換。
這次轉換也就是物件轉換成陣列。轉換後的資料如圖所示
可以看到資料成功的轉換成資料。也就是我們想要的資料。
源**也就是把上面的所有操作封裝起來,而使用時,只要呼叫方法傳遞兩個引數(訂單號,快遞名稱),返回的資料就是處理過的資料。
<?php
namespace wxapi\controller;
use think\controller;
class kuaidicontroller extends controller-.html";
$contents=$this -> _url($pageurl);
$data = json_decode($contents);
$data = $this -> objecttoarray($data);
return $data;
}/**
* @param $url 請求的url
* @return mixed
*/function _url($url)
//轉換成陣列
function objecttoarray($e)
return $e;}}
這種方法等於說就是爬網頁的資料,獲取有利於我們的資料,現在有很多**都提供了介面幫助我們獲取物流資訊,我們可以通過申請介面來對接到我們的專案中,並且大多數介面都是免費的。 PHP curl查詢全國快遞物流資訊
首先你要了解curl。curl是php乙個很強大的,用來傳送http請求的函式 詳情請見 2.直接進入正題 n um ber你 查詢的快 遞數pu blic func tion expr ess number 你查詢的快遞數 public function express number 你查詢的 快...
快遞物流資訊推送功能分析
之前有文章分析過快遞物流資訊的實時查詢api接入,詳細的介紹內容可以去這個位址逛逛 這裡就介紹一下快遞物流資訊的推送功能的介面對接分析 1.首先簡單用乙個簡單的示意圖分析一下 個人做的,比較粗略 快遞資訊推送服務由訂單訂閱 跟蹤系統和訂單推送組成。使用者系統通過呼叫訂單訂閱,將要需要跟蹤的運單號提交...
用c 查詢各快遞物流資訊
前面介紹過 用快遞100介面查詢各快遞物流資訊 裡面用的是api介面,但有些快遞不支援這種方式,本文介紹的htmlapi支援所有快遞公司。支援包括ems 郵政 順豐和申通在內的所有公司,穩定性強 速度快,易開發 安全性高 配引數時請先將 中括號去掉 引數 是否必需 說明 key是 快遞100的授權k...