利用PHP從淘寶采集評論和成交數據


如果不想通過淘寶開放平台API獲取數據,那么另外一個很好的辦法就是采集了。一般來說,采集一個網頁上的內容,只需要用CURL獲取源代碼,然后用正則表達式取出需要的內容就可以,不過如果這樣載入一個淘寶的頁面,會

如 果不想通過淘寶開放平台API獲取數據,那么另外一個很好的辦法就是采集了。一般來說,采集一個網頁上的內容,只需要用CURL獲取源代碼,然后用正則表 達式取出需要的內容就可以,不過如果這樣載入一個淘寶的頁面,會發現根本沒有評論和成交數據,直接查看源代碼可以看到評論的是空的。分析頁面后發現,淘寶 的評論並不是直接輸出在頁面中,而是在點擊評論和成交的時候,才會跨域獲取數據,並用腳本解析顯示。

 

這樣的處理方式使得 CURL頁面的方式不好使用了,但是實際上獲得數據反而更容易:使用CURL還必須考慮裝修模板的問題,通用性並不好,而跨域獲取的數據多數情況下是一個 標准的格式,通過抓取數據包最后發現淘寶的評論數據是從http://rate.taobao.com/feedRateList.htm?使用URL直 接GET方式過來的,並且是標准的JSON格式。 

 

數據地址:

  1. http://rate.taobao.com/feedRateList.htm?callback=jsonp_reviews_list&userNumId=【掌櫃的賬號數字ID】&auctionNumId=【商品ID】&currentPageNum=【評論分頁頁碼】
復制

其他還有些參數可以不用。【掌櫃的賬號數字ID】抓包時可獲取,商品ID在寶貝頁面鏈接中的id值就是。

 

第 二步:解析數值。因為淘寶的頁面編碼是GBK的,而PHP在處理GBK編碼的JSON文件時,對其中的中文處理是有問題的,會替換成空值,所以最后 JSON數據decode出來的是一個NULL,解決辦法是將GBK編碼轉換為UTF-8。如果你的網站是UTF-8的,那么把從淘寶抓來的JSON直接 轉成UTF-8然后decode就可用了,如果是GBK的,則轉好后再轉回GBK就可以。下面以http://item.taobao.com /item.htm?id=20972699241為例,UTF-8頁面的處理方法:

  1. $ch = curl_init();//初始化,創建句柄
  2. curl_setopt($ch, CURLOPT_URL, "http://rate.taobao.com/feedRateList.htm?callback=jsonp_reviews_list&userNumId=1048567622&auctionNumId=20972699241&currentPageNum=1");//設置細節參數
  3. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  4. curl_setopt($ch, CURLOPT_HEADER, 0);
  5. $str = curl_exec($ch);//獲取內容
  6. $str = mb_convert_encoding($str,'UTF-8','GBK');//轉換編碼
  7. $str = str_replace('jsonp_reviews_list(','',$str);//去掉多余的字符串
  8. $str = str_replace(')','',$str);
  9. $data = json_decode($str,TRUE);//得到數據了,第二個參數是轉化為數組
  10. print_r($data)//輸出頁面查看
復制

注意幾個細節:
1、從淘寶抓來的JSON是GBK編碼的;
2、PHP的json_decode()函數處理GBK編碼的中文數據是有問題的,需要轉換UTF-8后處理;
3、iconv()和mb_convert_encoding()函數也各有優劣和BUG,注意處理。
4、curl函數的使用;
5、如果要采集不止一頁評論,總的頁面數可以在返回值中的maxpage獲取。

 

購買記錄數據的獲取方法大同小異,天貓的評論獲取地址也有所不同,不過方法都是一樣的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM