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リクエストを送信する方法になります。この情報が皆さんのお役に立てれば幸いです。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です