如何使用Python開發(fā)1688商品詳情API接口乘陪?

在現(xiàn)代軟件開發(fā)中,API接口扮演著重要角色雕擂,它們允許開發(fā)者之間共享數(shù)據(jù)和功能啡邑。1688作為中國最大的B2B交易平臺,提供了豐富的商品數(shù)據(jù)井赌。通過開發(fā)1688商品詳情API接口谤逼,開發(fā)者可以獲取商品的詳細信息,如標題仇穗、價格流部、銷量和評價等。本文將詳細介紹如何使用Python開發(fā)1688商品詳情API接口仪缸。

一贵涵、準備工作

注冊1688開放平臺賬號

首先,你需要在1688開放平臺注冊一個賬號恰画,并申請相應(yīng)的API權(quán)限宾茂。在申請過程中,你需要提供必要的開發(fā)者信息拴还,并獲取應(yīng)用的AppKey和AppSecret跨晴。

安裝必要的Python模塊

為了發(fā)送HTTP請求和解析返回的數(shù)據(jù),你需要安裝一些Python模塊片林。常用的模塊包括requests端盆、hashlib、time和urllib.parse费封。你可以使用pip命令進行安裝:

bash

pip install requests

二焕妙、了解1688商品詳情API接口

1688商品詳情API接口提供了獲取商品詳細信息的接口,支持HTTP GET和POST請求弓摘,返回格式為JSON焚鹊。以下是接口的一些關(guān)鍵信息:

接口URL:https://api.1688.com/item/get_item_detail.do

請求參數(shù)

num_iid:商品ID,必填項韧献,用于指定要查詢的商品末患。

fields:可選參數(shù),用于指定返回的商品詳情字段锤窑,多個字段用逗號分隔璧针。如果不指定該參數(shù),則返回默認字段集渊啰。

app_key:應(yīng)用APPKEY探橱,必填項申屹,用于身份驗證。

sign_method:簽名方式隧膏,可選參數(shù)独柑,默認為md5。

timestamp:請求時間戳私植,必填項忌栅,用于防止請求重放。

format:返回格式曲稼,可選參數(shù)索绪,默認為json。

sign:簽名贫悄,必填項瑞驱,用于驗證請求的合法性。

三窄坦、生成簽名

簽名是確保請求合法性的重要步驟唤反。以下是生成簽名的步驟:

將請求參數(shù)按照參數(shù)名ASCII碼從小到大排序(字典序)。

拼接參數(shù)名和參數(shù)值鸭津,用&連接彤侍,如app_key=your_app_key&fields=title,price&num_iid=123456&sign_method=md5&timestamp=1628304000。

在拼接好的字符串末尾加上&secret=your_secret(your_secret為你的應(yīng)用密鑰)逆趋。

使用指定的簽名方式(如md5)對拼接好的字符串進行簽名盏阶。

四、編寫Python代碼

以下是一個使用Python請求1688商品詳情接口的示例代碼:

```

python

import requests

import hashlib

import time

import urllib.parse

# 請求參數(shù)

app_key = 'your_app_key'

secret = 'your_secret'

num_iid = '123456'? # 商品ID

fields = 'title,price,desc,pic_url'? # 要返回的商品詳情字段

timestamp = str(int(time.time()))? # 當前時間戳

sign_method = 'md5'

format = 'json'

# 生成簽名

params = {

? ? 'app_key': app_key,

? ? 'fields': fields,

? ? 'num_iid': num_iid,

? ? 'sign_method': sign_method,

? ? 'timestamp': timestamp,

? ? 'format': format

}

params_str = '&'.join(['{}={}'.format(k, urllib.parse.

quote(str(v))) for k, v in sorted(params.items(), key=lambda item: item[0])])

sign_str = params_str + '&secret=' + secret

sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()

# 發(fā)送請求

url = 'https://api.1688.com/item/get_item_detail.do'

headers = {'Content-Type': 'application/x-www-

form-urlencoded; charset=UTF-8'}

data = {

? ? 'app_key': app_key,

? ? 'fields': fields,

? ? 'num_iid': num_iid,

? ? 'sign_method': sign_method,

? ? 'timestamp': timestamp,

? ? 'format': format,

? ? 'sign': sign

}

response = requests.post(url, data=data, headers=headers)

# 處理響應(yīng)

if response.status_code == 200:

? ? result = response.json()

? ? print(result)

else:

? ? print('Request failed with status code:', response.status_code)

```

五闻书、解析返回的數(shù)據(jù)

如果請求成功名斟,1688商品詳情API接口將返回一個JSON格式的數(shù)據(jù)。你可以使用Python的內(nèi)置函數(shù)json.loads()將JSON字符串解析為Python字典魄眉,然后訪問字典中的鍵來獲取所需的商品信息砰盐。

例如,假設(shè)返回的JSON數(shù)據(jù)如下:

```

json

{

? ? "item": {

? ? ? ? "title": "商品標題",

? ? ? ? "price": "100.00",

? ? ? ? "desc": "商品描述",

? ? ? ? "pic_url": "https://example.com/image.jpg"

? ? }

}

```

你可以使用以下代碼解析并訪問商品信息:

```

python

if response.status_code == 200:

? ? result = response.json()

? ? item = result.get('item')

? ? if item:

? ? ? ? title = item.get('title')

? ? ? ? price = item.get('price')

? ? ? ? desc = item.get('desc')

? ? ? ? pic_url = item.get('pic_url')

? ? ? ? print(f"商品標題: {title}")

? ? ? ? print(f"商品價格: {price}")

? ? ? ? print(f"商品描述: {desc}")

? ? ? ? print(f"商品圖片URL: {pic_url}")

else:

? ? print('Request failed with status code:', response.status_code)

```

六坑律、錯誤處理和日志記錄

在實際開發(fā)中岩梳,錯誤處理和日志記錄是非常重要的。你可以使用Python的try-except語句來捕獲和處理異常脾歇,并使用logging模塊來記錄日志蒋腮。

以下是一個包含錯誤處理和日志記錄的示例代碼:

```

python

import requests

import hashlib

import time

import urllib.parse

import logging

# 配置日志記錄

logging.basicConfig(level=logging.INFO,

format='%(asctime)s - %(levelname)s - %(message)s')

# 請求參數(shù)

app_key = 'your_app_key'

secret = 'your_secret'

num_iid = '123456'? # 商品ID

fields = 'title,price,desc,pic_url'? # 要返回的商品詳情字段

timestamp = str(int(time.time()))? # 當前時間戳

sign_method = 'md5'

format = 'json'

# 生成簽名

params = {

? ? 'app_key': app_key,

? ? 'fields': fields,

? ? 'num_iid': num_iid,

? ? 'sign_method': sign_method,

? ? 'timestamp': timestamp,

? ? 'format': format

}

params_str = '&'.join(['{}={}'.format(k, urllib.parse.

quote(str(v))) for k, v in sorted(params.items(), key=lambda item: item[0])])

sign_str = params_str + '&secret=' + secret

sign = hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()

# 發(fā)送請求

url = 'https://api.1688.com/item/get_item_detail.do'

headers = {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}

data = {

? ? 'app_key': app_key,

? ? 'fields': fields,

? ? 'num_iid': num_iid,

? ? 'sign_method': sign_method,

? ? 'timestamp': timestamp,

? ? 'format': format,

? ? 'sign': sign

}

try:

? ? response = requests.post(url, data=data, headers=headers)

? ? response.raise_for_status()? # 如果響應(yīng)狀態(tài)碼不是200淘捡,將引發(fā)HTTPError異常

? ? result = response.json()

? ? item = result.get('item')

? ? if item:

? ? ? ? title = item.get('title')

? ? ? ? price = item.get('price')

? ? ? ? desc = item.get('desc')

? ? ? ? pic_url = item.get('pic_url')

? ? ? ? logging.info(f"商品標題: {title}")

? ? ? ? logging.info(f"商品價格: {price}")

? ? ? ? logging.info(f"商品描述: {desc}")

? ? ? ? logging.info(f"商品圖片URL: {pic_url}")

except requests.exceptions.RequestException as e:

```

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末藕各,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子焦除,更是在濱河造成了極大的恐慌激况,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乌逐,居然都是意外死亡竭讳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評論 3 395
  • 文/潘曉璐 我一進店門浙踢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绢慢,“玉大人,你說我怎么就攤上這事洛波∫扔撸” “怎么了?”我有些...
    開封第一講書人閱讀 164,960評論 0 355
  • 文/不壞的土叔 我叫張陵蹬挤,是天一觀的道長缚窿。 經(jīng)常有香客問我,道長焰扳,這世上最難降的妖魔是什么倦零? 我笑而不...
    開封第一講書人閱讀 58,750評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮吨悍,結(jié)果婚禮上扫茅,老公的妹妹穿的比我還像新娘。我一直安慰自己育瓜,他們只是感情好诞帐,可當我...
    茶點故事閱讀 67,764評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著爆雹,像睡著了一般停蕉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上钙态,一...
    開封第一講書人閱讀 51,604評論 1 305
  • 那天慧起,我揣著相機與錄音,去河邊找鬼册倒。 笑死蚓挤,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的驻子。 我是一名探鬼主播灿意,決...
    沈念sama閱讀 40,347評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼崇呵!你這毒婦竟也來了缤剧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,253評論 0 276
  • 序言:老撾萬榮一對情侶失蹤域慷,失蹤者是張志新(化名)和其女友劉穎荒辕,沒想到半個月后汗销,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡抵窒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,893評論 3 336
  • 正文 我和宋清朗相戀三年弛针,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片李皇。...
    茶點故事閱讀 40,015評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡削茁,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出掉房,到底是詐尸還是另有隱情付材,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評論 5 346
  • 正文 年R本政府宣布圃阳,位于F島的核電站厌衔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捍岳。R本人自食惡果不足惜富寿,卻給世界環(huán)境...
    茶點故事閱讀 41,352評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锣夹。 院中可真熱鬧页徐,春花似錦、人聲如沸银萍。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贴唇。三九已至搀绣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戳气,已是汗流浹背链患。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓶您,地道東北人麻捻。 一個月前我還...
    沈念sama閱讀 48,216評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像呀袱,于是被迫代替她去往敵國和親贸毕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,969評論 2 355

推薦閱讀更多精彩內(nèi)容