Pythonを使用してHTTPリクエストでXMLデータをPOSTする方法を紹介します。特に、YahooショッピングAPIやAmazonAPIではデータ送信時にAPI通信時にXML形式のデータをPOSTします。
まずは、Python3標準の「urllib」ライブラリを利用してHTTP通信を行います。「requests」ライブラリを使用することもできます。
import urllib.request
import urllib.error
import lxml
from bs4 import BeautifulSoup
# 設定値
requestURL = "ここのPOSTするURLを記入"
xmlPostBody = "<?xml version='1.0' encoding='UTF-8'?>\\n ここにXML形式でデータを記入"
# POSTリクエスト送信
bytesXMLPostBody = xmlPostBody.encode('UTF-8')
req = urllib.request.Request(url=requestURL, data=bytesXMLPostBody, headers=headers, method=method)
try:
with urllib.request.urlopen(req) as response:
response_body = response.read().decode('utf-8')
soup = BeautifulSoup(response_body, 'lxml')
print(soup)
except urllib.error.HTTPError as err:
soup = BeautifulSoup(err, 'lxml')
print(soup)
このサンプルでは戻り値がXML形式で返ってくることを想定しています。そのため、BeautifulSoup4を使用してXML形式をタグ解析できるようにしています。
以上がPythonを使用してAPIにXMLリクエストを送信する方法になります。この情報が皆さんのお役に立てれば幸いです。