eBay api童貞卒業🎉 Pythonで、SOLDからウォッチを抜き取る
はじめに
今回は、リサーチを効率的にするために特定のライバルセラーのSOLDからどの商品が需要 = ウォッチ数があるのかを調べるツールを作ってみました。
APIを利用するには、eBay Developers Programを登録しなければなりません。申請をしてから、2.3日くらいかかるのお早めに😉
マニュアルがほぼ英語なんで苦労しますが…笑
今回、ebay APIを使って抜き取る情報
・アイテムID
・タイトル
・商品の状態
・ウォッチ数
・値段
#APPIDを入力
appkey = "×××" #今回のライバルセラー
store = "evoyk69"
import requests
import csv
今回のライバルセラー😎
APIのURLを設計する
URL = ('https://svcs.ebay.com/services/search/FindingService/v1?
OPERATION-NAME=findCompletedItems&SERVICE-VERSION=1.13.0&
SECURITY-APPNAME='+appkey+'&RESPONSE-DATA-FORMAT=JSON&REST-PAYLOAD&
storeName='+store+'&outputSelector=StoreInfo&
itemFilter(0).name=Seller&itemFilter(0).value=evoyk69&
itemFilter(1).name=MinPrice&itemFilter(1).value=50&
itemFilter(2).paramName=Currency&itemFilter(2).paramValue=USD&
itemFilter(3).paramName=SoldItemsOnly&itemFilter(3).value=true&
paginationInput.entriesPerPage=100&sortOrder=PricePlusShippingLowest')
いきなり難易度上がった感ありますよね!一つ一つ見ていけば、結構簡単な仕組みになってます。
では、二つに分けて、細かく見ていきましょう。
URL = ('https://svcs.ebay.com/services/search/FindingService/v1?
OPERATION-NAME=findCompletedItems&SERVICE-VERSION=1.13.0&
SECURITY-APPNAME='+appkey+'&RESPONSE-DATA-FORMAT=JSON&REST-PAYLOAD&
storeName='+store+'&outputSelector=StoreInfo&
前半は、Finding API (商品検索)を使って、特定のebayストアからJsonという形式でデータを取るように指示してます。
*appkeyとstoreには、一番最初に書いた行にあります。
itemFilter(0).name=Seller&itemFilter(0).value=evoyk69&
itemFilter(1).name=MinPrice&itemFilter(1).value=50&
itemFilter(2).paramName=Currency&itemFilter(2).paramValue=USD&
itemFilter(3).paramName=SoldItemsOnly&itemFilter(3).value=true&
paginationInput.entriesPerPage=100&sortOrder=PricePlusShippingLowest')
後半は、商品検索の条件のフィルターをかけてます。
今回の場合は、(特定のセラー名(evoyk69)/50ドル以上/SOLD/ 商品数100個/ 小さい順)を条件に絞って設定をしています。
設計したURLを使って、欲しい情報を抜き取る
def get_page():
#指定したurlから、JSONデータを返す
request = requests.get(URL)
products = request.json()
#for文で複数の商品データを扱う for item in (products["findCompletedItemsResponse"][0]["searchResult"][0]["item"]):
itemId = item["itemId"][0]
title = item["title"][0]
#状態がない商品を例外扱いにする try:
condition = item['condition'][0]['conditionDisplayName'][0]
except:
condition = '--'
price = item['sellingStatus'][0]["convertedCurrentPrice"][0]['__value__']
#ウォッチも同様に例外に try:
watchCount = item['listingInfo'][0]['watchCount'][0]
except:
watchCount = '0'
#dataに格納する data = {
'itemId' : itemId,
'title' : title,
'condition' : condition,
'watchCount' : watchCount,
'price' : price
}
#CSVに書き込む
with open('eBayWatch.csv', 'a') as csvfile:
#順番に並べる
row = [data['itemId'],data['title'], data['condition'],data['watchCount'],data['price']]
writer = csv.writer(csvfile)
writer.writerow(row)
#最後に、指定した関数を処理
if __name__ == "__main__":
get_page()
処理結果
ちゃんと成功できてますね😆 軽く文字化けがあるけど…笑
さいごに
自分の経験上、ウォッチ数が5個以上ある商品は、すべて売れると思っております。売れない場合は、価格設定や商品画像、商品説明が不十分などの原因がほとんどです。
このツールを使って、ウォッチが多くついてる商品を重点的にリサーチをすれば、効率的に売上を伸ばすことができます😇
eBay APIの案件待ってますうぅ!!!!!(今なら低単価で😙
appkey = "***"
store = "***"
import requests
import csv
URL = ('https://svcs.ebay.com/services/search/FindingService/v1?OPERATION-NAME=findCompletedItems&SERVICE-VERSION=1.13.0&SECURITY-APPNAME='+appkey+'&RESPONSE-DATA-FORMAT=JSON&REST-PAYLOAD&storeName='+store+'&outputSelector=StoreInfo&itemFilter(0).name=Seller&itemFilter(0).value=***&itemFilter(1).name=MinPrice&itemFilter(1).value=50&itemFilter(2).paramName=Currency&itemFilter(2).paramValue=USD&itemFilter(3).paramName=SoldItemsOnly&itemFilter(3).value=true&paginationInput.entriesPerPage=100&sortOrder=PricePlusShippingLowest')
def get_page():
request = requests.get(URL)
products = request.json()
for item in (products["findCompletedItemsResponse"][0]["searchResult"][0]["item"]):
itemId = item["itemId"][0]
title = item["title"][0]
try:
condition = item['condition'][0]['conditionDisplayName'][0]
except:
condition = '--'
price = item['sellingStatus'][0]["convertedCurrentPrice"][0]['__value__']
try:
watchCount = item['listingInfo'][0]['watchCount'][0]
except:
watchCount = '0'
data = {
'itemId' : itemId,
'title' : title,
'condition' : condition,
'watchCount' : watchCount,
'price' : price
}
with open('eBayWatch.csv', 'a') as csvfile:
row = [data['itemId'],data['title'], data['condition'],data['watchCount'],data['price']]
writer = csv.writer(csvfile)
writer.writerow(row)
if __name__ == "__main__":
get_page()
この記事が気に入ったらサポートをしてみませんか?