?
一、接口分析
Daraz平臺(tái)未公開(kāi)官方API文檔,但可通過(guò)分析網(wǎng)絡(luò)請(qǐng)求獲取數(shù)據(jù)接口。核心步驟如下:
請(qǐng)求URL
搜索頁(yè)面的數(shù)據(jù)接口通常為:
base_url = "https://www.daraz.pk/api/catalog/search"

關(guān)鍵參數(shù)
params = { "q": "mobile", # 搜索關(guān)鍵詞 "page": 1, # 分頁(yè)頁(yè)碼 "sort": "popularity", # 排序方式 "spm": "a2a0e.12345678" # 頁(yè)面標(biāo)識(shí)(需動(dòng)態(tài)獲?。?}

請(qǐng)求頭要求
需模擬瀏覽器行為防止反爬:
headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)", "Referer": "https://www.daraz.pk/" }

二、Python實(shí)現(xiàn)示例
import requests
import json
def fetch_daraz_search(keyword, page=1):
url = "https://www.daraz.pk/api/catalog/search"
# 動(dòng)態(tài)獲取spm參數(shù)(需實(shí)際抓取頁(yè)面源碼解析)
spm_value = extract_spm()
params = {
"q": keyword,
"page": page,
"sort": "popularity",
"spm": spm_value
}
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Accept-Language": "en-US,en;q=0.9"
}
try:
response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
return response.json() # 返回結(jié)構(gòu)化JSON數(shù)據(jù)
else:
print(f"請(qǐng)求失敗,狀態(tài)碼:{response.status_code}")
except Exception as e:
print(f"接口異常:{str(e)}")
# 示例調(diào)用
data = fetch_daraz_search("wireless earphones", page=2)
print(json.dumps(data, indent=2))

三、返回?cái)?shù)據(jù)結(jié)構(gòu)解析
典型響應(yīng)數(shù)據(jù)包含:
{
"data": {
"products": [
{
"id": "P0012345",
"name": "Wireless Bluetooth Earbuds",
"price": "Rs. 1,299",
"original_price": "Rs. 2,599",
"rating": 4.5,
"review_count": 128
},
// ... 其他商品數(shù)據(jù)
],
"total_pages": 23 // 總頁(yè)數(shù)
}
}

四、注意事項(xiàng)
反爬策略
使用代理IP輪詢(xún)(推薦requests.Session+代理池)
添加隨機(jī)延遲:time.sleep(random.uniform(1, 3))
定期更新User-Agent
參數(shù)動(dòng)態(tài)性
spm參數(shù)需從頁(yè)面HTML中實(shí)時(shí)提取:
def extract_spm():
# 示例:從首頁(yè)標(biāo)簽中正則匹配
pattern = r'"spm":"([a-z0-9.]+)"'
# 實(shí)際需通過(guò)請(qǐng)求首頁(yè)獲取

法律合規(guī)
! 重要:請(qǐng)遵守Daraz的robots.txt限制,避免高頻請(qǐng)求(建議≤5次/分鐘)

五、擴(kuò)展方案
若API變動(dòng)頻繁,可采用瀏覽器自動(dòng)化方案:
from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("https://www.daraz.pk/search?q=mobile") # 直接解析頁(yè)面DOM獲取數(shù)據(jù) product_elements = driver.find_elements(By.CSS_SELECTOR, "div.product-card")

通過(guò)此方法可實(shí)現(xiàn)更穩(wěn)定的數(shù)據(jù)采集,但需權(quán)衡性能與維護(hù)成本。
?
審核編輯 黃宇
-
API
+關(guān)注
關(guān)注
2文章
2373瀏覽量
66802
發(fā)布評(píng)論請(qǐng)先 登錄
使用dp123電天下平臺(tái)的獲取電天下列表搜索數(shù)據(jù)API接口
通過(guò)西門(mén)子平臺(tái)API獲取搜索列表數(shù)據(jù)的技術(shù)實(shí)踐
???????使用 DMM Web API 獲取搜索列表數(shù)據(jù)
利用Daraz API獲取商品詳情數(shù)據(jù)
關(guān)鍵詞搜索京東列表 API 技術(shù)對(duì)接指南
如何從Target平臺(tái)獲取搜索列表數(shù)據(jù)的API接口
調(diào)用西門(mén)子平臺(tái) API 獲取 xmz 搜索列表數(shù)據(jù)
1688搜索店鋪列表API使用指南
房產(chǎn)數(shù)據(jù)平臺(tái)安家go獲取地區(qū)列表數(shù)據(jù)的API接口
順企網(wǎng)平臺(tái)根據(jù)關(guān)鍵詞獲取企業(yè)列表API接口詳解與實(shí)現(xiàn)
快手平臺(tái)根據(jù)關(guān)鍵詞獲取視頻列表的 API 接口詳解
1688平臺(tái)獲取店鋪所有商品列表API接口技術(shù)詳解
淘寶平臺(tái)獲取店鋪商品列表API接口實(shí)現(xiàn)詳解
產(chǎn)品列表獲取API接口詳解
在Daraz平臺(tái)獲取搜索列表數(shù)據(jù)的API接口實(shí)現(xiàn)
評(píng)論