見出し画像

eBay api童貞卒業🎉 Pythonで、SOLDからウォッチを抜き取る

はじめに

今回は、リサーチを効率的にするために特定のライバルセラーのSOLDからどの商品が需要 = ウォッチ数があるのかを調べるツールを作ってみました。

APIを利用するには、eBay Developers Programを登録しなければなりません。申請をしてから、2.3日くらいかかるのお早めに😉
 
マニュアルがほぼ英語なんで苦労しますが…笑

今回、ebay APIを使って抜き取る情報

・アイテムID
・タイトル
・商品の状態
・ウォッチ数
・値段

 #APPIDを入力 
appkey = "×××" #今回のライバルセラー 
store = "evoyk69"

import requests
import csv


今回のライバルセラー😎

スクリーンショット 2020-04-21 17.32.13


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()


処理結果

スクリーンショット 2020-04-21 17.30.18

ちゃんと成功できてますね😆 軽く文字化けがあるけど…笑


さいごに


自分の経験上、ウォッチ数が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()


この記事が参加している募集

おうち時間を工夫で楽しく

この記事が気に入ったらサポートをしてみませんか?