【问题标题】:How to extract specific data in Python from a REST API request如何从 REST API 请求中提取 Python 中的特定数据
【发布时间】:2022-11-19 23:52:17
【问题描述】:

我使用的是 RapidApi 的 REST API,我成功打印了整个响应,但我只需要一些特定参数。比如,只打印出发时间和到达时间。使用 params:{} 时它没有帮助,因为它会打印带有指定参数的每个参数。我需要相反的方法来打印具有更多参数的特定参数。

import requests
url = "https://timetable-lookup.p.rapidapi.com/TimeTable/LHR/BCN/20221119/"

headers = {
    "X-RapidAPI-Key": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "X-RapidAPI-Host": "timetable-lookup.p.rapidapi.com"
}

response = requests.request("GET",url,headers=headers, params=querystring)
print(response.text)

API 响应如下:

<?xml version="1.0" encoding="UTF-8"?>
<OTA_AirDetailsRS PrimaryLangID="eng" Version="1.0" TransactionIdentifier="" FLSNote="This XML adds attributes not in the OTA XML spec.  All such attributes start with FLS" FLSDevice="ota-xml-expanded" xmlns="http://www.opentravel.org/OTA/2003/05">
  <Success/>
  <FLSResponseFields FLSOriginCode="LHR" FLSOriginName="Heathrow Airport" FLSDestinationCode="BCN" FLSDestinationName="Barcelona Airport" FLSStartDate="2022-11-19" FLSEndDate="2022-11-19" FLSResultCount="5" FLSRoutesFound="124" FLSBranchCount="1457" FLSTargetCount="1112" FLSRecordCount="785252"/>
  <FlightDetails TotalFlightTime="PT2H05M" TotalMiles="714" TotalTripTime="PT2H05M" FLSDepartureDateTime="2022-11-19T06:05:00" FLSDepartureTimeOffset="+0000" FLSDepartureCode="LHR" FLSDepartureName="Heathrow Airport" FLSArrivalDateTime="2022-11-19T09:10:00" FLSArrivalTimeOffset="+0100" FLSArrivalCode="BCN" FLSArrivalName="Barcelona Airport" FLSFlightType="NonStop" FLSFlightLegs="1" FLSFlightDays=".....6." FLSDayIndicator="">
    <FlightLegDetails DepartureDateTime="2022-11-19T06:05:00" FLSDepartureTimeOffset="+0000" ArrivalDateTime="2022-11-19T09:10:00" FLSArrivalTimeOffset="+0100" FlightNumber="472" JourneyDuration="PT2H05M" SequenceNumber="1" LegDistance="714" FLSMeals="G" FLSInflightServices=" " FLSUUID="LHRBCN20221119BA472">
      <DepartureAirport CodeContext="IATA" LocationCode="LHR" FLSLocationName="Heathrow Airport" Terminal="5" FLSDayIndicator=""/>
      <ArrivalAirport CodeContext="IATA" LocationCode="BCN" FLSLocationName="Barcelona Airport" Terminal="1" FLSDayIndicator=""/>
      <MarketingAirline Code="BA" CodeContext="IATA" CompanyShortName="British Airways"/>
      <Equipment AirEquipType="32N"/>
    </FlightLegDetails>
  </FlightDetails>
  <FlightDetails TotalFlightTime="PT2H05M" TotalMiles="714" TotalTripTime="PT2H05M" FLSDepartureDateTime="2022-11-19T07:25:00" FLSDepartureTimeOffset="+0000" FLSDepartureCode="LHR" FLSDepartureName="Heathrow Airport" FLSArrivalDateTime="2022-11-19T10:30:00" FLSArrivalTimeOffset="+0100" FLSArrivalCode="BCN" FLSArrivalName="Barcelona Airport" FLSFlightType="NonStop" FLSFlightLegs="1" FLSFlightDays=".....6." FLSDayIndicator="">
    <FlightLegDetails DepartureDateTime="2022-11-19T07:25:00" FLSDepartureTimeOffset="+0000" ArrivalDateTime="2022-11-19T10:30:00" FLSArrivalTimeOffset="+0100" FlightNumber="478" JourneyDuration="PT2H05M" SequenceNumber="1" LegDistance="714" FLSMeals="G" FLSInflightServices=" " FLSUUID="LHRBCN20221119BA478">
      <DepartureAirport CodeContext="IATA" LocationCode="LHR" FLSLocationName="Heathrow Airport" Terminal="5" FLSDayIndicator=""/>
      <ArrivalAirport CodeContext="IATA" LocationCode="BCN" FLSLocationName="Barcelona Airport" Terminal="1" FLSDayIndicator=""/>
      <MarketingAirline Code="BA" CodeContext="IATA" CompanyShortName="British Airways"/>
      <Equipment AirEquipType="320"/>
    </FlightLegDetails>
  </FlightDetails>
  <FlightDetails TotalFlightTime="PT2H05M" TotalMiles="714" TotalTripTime="PT2H05M" FLSDepartureDateTime="2022-11-19T10:25:00" FLSDepartureTimeOffset="+0000" FLSDepartureCode="LHR" FLSDepartureName="Heathrow Airport" FLSArrivalDateTime="2022-11-19T13:30:00" FLSArrivalTimeOffset="+0100" FLSArrivalCode="BCN" FLSArrivalName="Barcelona Airport" FLSFlightType="NonStop" FLSFlightLegs="1" FLSFlightDays=".....6." FLSDayIndicator="">
    <FlightLegDetails DepartureDateTime="2022-11-19T10:25:00" FLSDepartureTimeOffset="+0000" ArrivalDateTime="2022-11-19T13:30:00" FLSArrivalTimeOffset="+0100" FlightNumber="474" JourneyDuration="PT2H05M" SequenceNumber="1" LegDistance="714" FLSMeals="G" FLSInflightServices=" " FLSUUID="LHRBCN20221119BA474">
      <DepartureAirport CodeContext="IATA" LocationCode="LHR" FLSLocationName="Heathrow Airport" Terminal="5" FLSDayIndicator=""/>
      <ArrivalAirport CodeContext="IATA" LocationCode="BCN" FLSLocationName="Barcelona Airport" Terminal="1" FLSDayIndicator=""/>
      <MarketingAirline Code="BA" CodeContext="IATA" CompanyShortName="British Airways"/>
      <Equipment AirEquipType="32N"/>
    </FlightLegDetails>
  </FlightDetails>
  <FlightDetails TotalFlightTime="PT2H05M" TotalMiles="714" TotalTripTime="PT2H05M" FLSDepartureDateTime="2022-11-19T13:15:00" FLSDepartureTimeOffset="+0000" FLSDepartureCode="LHR" FLSDepartureName="Heathrow Airport" FLSArrivalDateTime="2022-11-19T16:20:00" FLSArrivalTimeOffset="+0100" FLSArrivalCode="BCN" FLSArrivalName="Barcelona Airport" FLSFlightType="NonStop" FLSFlightLegs="1" FLSFlightDays=".....6." FLSDayIndicator="">
    <FlightLegDetails DepartureDateTime="2022-11-19T13:15:00" FLSDepartureTimeOffset="+0000" ArrivalDateTime="2022-11-19T16:20:00" FLSArrivalTimeOffset="+0100" FlightNumber="480" JourneyDuration="PT2H05M" SequenceNumber="1" LegDistance="714" FLSMeals="G" FLSInflightServices=" " FLSUUID="LHRBCN20221119BA480">
      <DepartureAirport CodeContext="IATA" LocationCode="LHR" FLSLocationName="Heathrow Airport" Terminal="5" FLSDayIndicator=""/>
      <ArrivalAirport CodeContext="IATA" LocationCode="BCN" FLSLocationName="Barcelona Airport" Terminal="1" FLSDayIndicator=""/>
      <MarketingAirline Code="BA" CodeContext="IATA" CompanyShortName="British Airways"/>
      <Equipment AirEquipType="320"/>
    </FlightLegDetails>
  </FlightDetails>
  <FlightDetails TotalFlightTime="PT2H05M" TotalMiles="714" TotalTripTime="PT2H05M" FLSDepartureDateTime="2022-11-19T19:20:00" FLSDepartureTimeOffset="+0000" FLSDepartureCode="LHR" FLSDepartureName="Heathrow Airport" FLSArrivalDateTime="2022-11-19T22:25:00" FLSArrivalTimeOffset="+0100" FLSArrivalCode="BCN" FLSArrivalName="Barcelona Airport" FLSFlightType="NonStop" FLSFlightLegs="1" FLSFlightDays=".....6." FLSDayIndicator="">
    <FlightLegDetails DepartureDateTime="2022-11-19T19:20:00" FLSDepartureTimeOffset="+0000" ArrivalDateTime="2022-11-19T22:25:00" FLSArrivalTimeOffset="+0100" FlightNumber="482" JourneyDuration="PT2H05M" SequenceNumber="1" LegDistance="714" FLSMeals="G" FLSInflightServices=" " FLSUUID="LHRBCN20221119BA482">
      <DepartureAirport CodeContext="IATA" LocationCode="LHR" FLSLocationName="Heathrow Airport" Terminal="5" FLSDayIndicator=""/>
      <ArrivalAirport CodeContext="IATA" LocationCode="BCN" FLSLocationName="Barcelona Airport" Terminal="1" FLSDayIndicator=""/>
      <MarketingAirline Code="BA" CodeContext="IATA" CompanyShortName="British Airways"/>
      <Equipment AirEquipType="32N"/>
    </FlightLegDetails>
  </FlightDetails>
</OTA_AirDetailsRS>

我怎样才能写代码只显示出发日期时间,到达日期时间, 和位置代码到达国和目的地国?

谢谢!

【问题讨论】:

    标签: python api rest request


    【解决方案1】:

    尝试使用 xml.etree.ElementTree 包解析输出。从那里,您应该能够搜索您的 xml 树以找到相关数据并按您希望的方式显示它。

    这是一个帮助您入门的 sn-p:

    # create element tree object
    tree = ET.parse(xmlfile)
      
    # get root element
    root = tree.getroot()
    

    从那里您可以使用树结构从根搜索。文档在这里https://docs.python.org/3/library/xml.etree.elementtree.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      相关资源
      最近更新 更多