近年、WebAPIによるデータの送受信が普及してきましたのでXMLを使ったタイプのAPIについて紹介します。今回は、eBayのWebAPIを使用しています。このAPIを使用するには事前に登録が必要で使用開始まで5営業日程度かかります。
WebAPIを使用する場合、各サイトに利用登録しAPIキーを取得する必要がありますが、その方法についてはここでは割愛します。
eBayのAPIを使ってみたい方は下段にeBay Developerサイトのリンクを掲載していますので参考にしてください。
まずプロバイダ指定の形式の設定用XMLとヘッダー情報を作りそのデータを送信します。戻ってきたパラメータ(今回はXML形式)をBeautifulSoupを使ってxml形式のファイルを書き出しています。API戻り値はxml形式であるためパース用にBeautifulsoup4と内部で使用するlxmlをインストールします。JSON形式の戻り値の場合は必要ありません。
pip install beautifulsoup4
pip install lxml
import requests
from bs4 import BeautifulSoup
# 設定値
debug = True
requestURL = ""
app_id = ""
dev_id = ""
cert_id = ""
app_tolken = ""
#eBayでは本番用の環境と金銭の動かないSandBox環境がある。
#debug中はsandboxのAPIを使ってテストする。
if debug == False :
#Production 用のAPI URL
requestURL = "https://api.ebay.com/ws/api.dll"
app_id = "your_app_id"
dev_id = "your_dev_id"
cert_id = "your_cert_id"
app_tolken = "your_app_tolken"
else :
#Sandbox用のAPI URL
requestURL = "https://api.sandbox.ebay.com/ws/api.dll"
app_id = "your_app_id"
dev_id = "your_dev_id"
cert_id = "your_cert_id"
app_tolken = "your_app_tolken"
#XMLは、各サイトの仕様に応じて設定する。
#ebayのGetSellerTransactionsRequestというAPIを使う場合以下のBodyを設定する。
xmlPostBody = """
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<GetSellerTransactionsRequest xmlns=\"urn:ebay:apis:eBLBaseComponents\">
<RequesterCredentials>
<eBayAuthToken>""" + app_tolken + """</eBayAuthToken>
</RequesterCredentials>
</GetSellerTransactionsRequest>"""
#辞書形式でヘッダー情報を入れる。
headers = {}
headers["Content-type"] = "text/xml;"
headers["X-EBAY-API-COMPATIBILITY-LEVEL"] = "1179"
headers["X-EBAY-API-CALL-NAME"] = "GetSellerTransactions"
headers["X-EBAY-API-SITEID"] = "0"
headers["X-EBAY-API-DEV-NAME"] = dev_id
headers["X-EBAY-API-APP-NAME"] = app_id
headers["X-EBAY-API-CERT-NAME"] = cert_id
# POSTリクエスト送信
#XMLで指定した文字コードを設定しrequests.requestの引数に渡す。
bytesXMLPostBody = xmlPostBody.encode("UTF-8")
req = requests.request(url=requestURL, data=bytesXMLPostBody, headers=headers, method="POST")
#戻り値をtextデータに変換しBeautifulSoupで結果を解析する。
soup = BeautifulSoup(req.text, "lxml")
#1行1タグに整形する。
xml = soup.prettify("utf-8")
#結果をファイルに出力する。
with open("output1.xml", "wb") as file:
file.write(xml)
eBay Developer Program:
https://developer.ebay.com/
eBay Developer Program API Document:
https://developer.ebay.com/docs/api-deprecation
BeautifulSoup 参考サイト:
https://www.inet-solutions.jp/technology/beautiful-soup-python/
コメント