lxml が、調べている xml の一部を解析し、他のビットを解析しない理由を理解しました。
次のスニペットが機能し、必要なすべてのタイトルが表示されます。
doc = lh.fromstring(resp)
for product in doc.xpath('.//item'):
prices = product.xpath(".//title/text()")
ただし、単純な変更
doc = lh.fromstring(resp)
for product in doc.xpath('.//item'):
prices = product.xpath(".//itemId/text()")
また
doc = lh.fromstring(resp)
for product in doc.xpath('.//item'):
prices = product.xpath(".//globalId/text()")
空の結果の数として価格を返すだけです。
以下の XML...
<findItemsByProductResponse>
<ack>Success</ack>
<version>1.12.0</version>
<timestamp>2013-02-04T13:35:57.106Z</timestamp>
<searchResult count="31">
<item>
<itemId>130842622974</itemId>
<title>BONES - COMPLETE SEASON 4 - BLURAY</title>
<globalId>EBAY-US</globalId>
<primaryCategory>
<categoryId>617</categoryId>
<categoryName>DVDs & Blu-ray Discs</categoryName>
</primaryCategory>
<galleryURL>
http://thumbs3.ebaystatic.com/m/mnuTBPOWZ-6F4kIHS1mj3gg/140.jpg
</galleryURL>
<viewItemURL>
http://www.ebay.com/itm/BONES-COMPLETE-SEASON-4-BLURAY-/130842622974?pt=US_DVD_HD_DVD_Blu_ray
</viewItemURL>
<productId type="ReferenceID">78523575</productId>
<paymentMethod>PayPal</paymentMethod>
<autoPay>false</autoPay>
<postalCode>60544</postalCode>
<location>Plainfield,IL,USA</location>
<country>US</country>
<shippingInfo>
<shippingServiceCost currencyId="USD">0.0</shippingServiceCost>
<shippingType>Free</shippingType>
<shipToLocations>Worldwide</shipToLocations>
<expeditedShipping>true</expeditedShipping>
<oneDayShippingAvailable>false</oneDayShippingAvailable>
<handlingTime>1</handlingTime>
</shippingInfo>
<sellingStatus>
<currentPrice currencyId="USD">12.99</currentPrice>
<convertedCurrentPrice currencyId="USD">12.99</convertedCurrentPrice>
<sellingState>Active</sellingState>
<timeLeft>P3DT23H12M7S</timeLeft>
</sellingStatus>
<listingInfo>
<bestOfferEnabled>false</bestOfferEnabled>
<buyItNowAvailable>false</buyItNowAvailable>
<startTime>2013-01-29T12:48:04.000Z</startTime>
<endTime>2013-02-08T12:48:04.000Z</endTime>
<listingType>FixedPrice</listingType>
<gift>false</gift>
</listingInfo>
<returnsAccepted>true</returnsAccepted>
<condition>
<conditionId>1000</conditionId>
<conditionDisplayName>Brand New</conditionDisplayName>
</condition>
<isMultiVariationListing>false</isMultiVariationListing>
<topRatedListing>true</topRatedListing>
</item>
ps 追加のボーナスとして、次のステップとして、convertedCurrentPrice を見つけることを検討します (一度に 1 つの謎を解決する必要があると考えました) - 使用するコードは次のようになります
doc = lh.fromstring(resp)
for product in doc.xpath('.//item'):
prices = product.xpath(".//sellingStatus/convertedCurrentPrice/text()")
それは正しいと思われますか、それともこれを行うためのより良い方法はありますか?
ありがとう、
マット