首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用python从xml树中提取值?

如何使用python从xml树中提取值?
EN

Stack Overflow用户
提问于 2015-02-12 19:47:04
回答 1查看 132关注 0票数 0

我有一个api查询,它返回下面的xml树,我想从中提取某些值。特别是,我想提取诸如LinkedInCount之类的信息。

代码语言:javascript
复制
<aws:UrlInfoResponse xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/">
<aws:Response xmlns:aws="http://awis.amazonaws.com/doc/2005-07-11">
<aws:OperationRequest>
<aws:RequestId>5486794a-0d03-4d47-a45b-e95764c3f0ee</aws:RequestId><
/aws:OperationRequest>
<aws:UrlInfoResult>
<aws:Alexa>

  <aws:ContentData>
    <aws:DataUrl type="canonical">yahoo.com/</aws:DataUrl>
    <aws:Asin>B00006D2TC</aws:Asin>
    <aws:SiteData>
      <aws:Title>Yahoo!</aws:Title>
      <aws:Description>Personalized content and search options. Chatrooms, free e-mail, clubs, and pager.</aws:Description>
      <aws:OnlineSince>18-Jan-1995</aws:OnlineSince>
    </aws:SiteData>
    <aws:Speed>
      <aws:MedianLoadTime>2242</aws:MedianLoadTime>
      <aws:Percentile>51</aws:Percentile>
    </aws:Speed>
    <aws:AdultContent>no</aws:AdultContent>
    <aws:Language>
      <aws:Locale>en</aws:Locale>
    </aws:Language>
    <aws:LinksInCount>76894</aws:LinksInCount>
    <aws:OwnedDomains>
      <aws:OwnedDomain>
        <aws:Domain>yahooligans.com</aws:Domain>
        <aws:Title>yahooligans.com</aws:Title>
      </aws:OwnedDomain>
    </aws:OwnedDomains>
  </aws:ContentData>

  <aws:Related>
    <aws:DataUrl type="canonical">yahoo.com/</aws:DataUrl>
    <aws:Asin>B00006D2TC</aws:Asin>
    <aws:RelatedLinks>
      <aws:RelatedLink>
        <aws:DataUrl type="canonical">aol.com/</aws:DataUrl>
        <aws:NavigableUrl>http://aol.com/</aws:NavigableUrl>
        <aws:Asin>B00006ARD3</aws:Asin>
        <aws:Relevance>301</aws:Relevance>
      </aws:RelatedLink>
    </aws:RelatedLinks>
    <aws:Categories>
      <aws:CategoryData>
        <aws:Title>On the Web/Web Portals</aws:Title>
        <aws:AbsolutePath>Top/Computers/Internet/On_the_Web/Web_Portals</aws:AbsolutePath>
      </aws:CategoryData>
    </aws:Categories>
  </aws:Related>        

  <aws:TrafficData>
    <aws:DataUrl type="canonical">yahoo.com/</aws:DataUrl>
    <aws:Asin>B00006D2TC</aws:Asin>
    <aws:Rank>1</aws:Rank>
    <aws:UsageStatistics>

      <aws:UsageStatistic>
        <aws:TimeRange>
          <aws:Days>1</aws:Days>
        </aws:TimeRange>
        <aws:Rank>
          <aws:Value>1</aws:Value>
          <aws:Delta>+0</aws:Delta>
        </aws:Rank>
        <aws:Reach>
          <aws:Rank>
            <aws:Value>2</aws:Value>
            <aws:Delta>+0</aws:Delta>
          </aws:Rank>
          <aws:PerMillion>
            <aws:Value>252,500</aws:Value>
            <aws:Delta>-1%</aws:Delta>
          </aws:PerMillion>
        </aws:Reach>
        <aws:PageViews>
          <aws:PerMillion>
            <aws:Value>51,400</aws:Value>
            <aws:Delta>-1%</aws:Delta>
          </aws:PerMillion>
          <aws:Rank>
            <aws:Value>1</aws:Value>
            <aws:Delta>+0</aws:Delta>
          </aws:Rank>
          <aws:PerUser>
            <aws:Value>13.7</aws:Value>
            <aws:Delta>-1%</aws:Delta>
          </aws:PerUser>
        </aws:PageViews>
      </aws:UsageStatistic>

    </aws:UsageStatistics>
  </aws:TrafficData>

</aws:Alexa>
</aws:UrlInfoResult>
<aws:ResponseStatus xmlns:aws="http://alexa.amazonaws.com/doc/2005-10-05/">
<aws:StatusCode>Success</aws:StatusCode>
</aws:ResponseStatus>
</aws:Response>
</aws:UrlInfoResponse> 

一旦我得到了“树”,我就可以用下面的代码得到响应:

代码语言:javascript
复制
elem = tree.find("//{http://alexa.amazonaws.com/doc/2005-10-05/}StatusCode")
print elem.text

但是,我不确定如何获取其中包含的LinksInCount

代码语言:javascript
复制
 <aws:LinksInCount>76894</aws:LinksInCount>

我尝试过以下几种方法:

代码语言:javascript
复制
elem = tree.find("//{http://alexa.amazonaws.com/doc/2005-10-05/}LinksInCount")
print elem.text


elem = tree.find("LinksInCount")
print elem.text

http://docs.aws.amazon.com/AlexaWebInfoService/latest/

EN

回答 1

Stack Overflow用户

发布于 2015-02-12 19:53:16

看起来您使用的是ElementTreefind方法只搜索当前元素的直接子元素。请尝试使用iterfind

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28476660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档