Product Advertising APIのBrowseNodeLookupで本(和書)のBrowseNodeを全部取得する(2)
はい、前回やっていたことはかなり非効率であることが分かりました。再帰するのか否かはおいておきまして、そもそもBrowseNodeLookupの結果のルールに先程気づきまして、非常に複雑でめんどうなことをしていたと気づいた次第です。
さて、何がルールかというと、RootのLookupをした場合は、ancestorが一つだけあります。中間のLookupをした場合は、ancestorが複数あります。最下層のLookupをした場合は、ancestorがございません。このancestorの数を確認するだけで、最下層か否かを確認することが可能であります。どうでしょうか?衝撃的事実であったのではないかと思います。ぜひ、Browsenodeの取得に苦慮されている方がいましたら、この事実を教えてあげるといいと思います。
それでは失礼します。
コードは大体下記のようになるのではないでしょうか?
browsenodes = result.browsenodelookupresponse.browsenodesancestorsList = browsenodes.findAll('ancestors')ancestorIdList = []
for ancestors in ancestorsList: if ancestors.browsenode: ancestorIdList.append(int(ancestors.browsenode.browsenodeid.contents[0])) ancestors.extract()
browseNodeList = browsenodes.findAll('browsenode')
#最下層じゃないif len(ancestorIdList) > 0: #最下層じゃない場合の処理
#最下層else: #最下層の場合の処理