2017-07-13 3 views
0

Es gibt rund 966 Namen auf der Webseite mit JSON Inhalt, aber mit meinem Skript bekomme ich nur 10 von ihnen. Ich bin neu bei JSON, deshalb kann ich den Fehler, den ich mache, nicht herausfinden. Wie kann ich alle Namen bekommen? Ich bin mit dem folgenden Code versuchen:Kann die Namen von JSON Antwort nicht schaben

import requests 

url = 'https://www.zebra.com/bin/zebra/partnersearch?inMiles=true&start=0&numRows=10&latitude=39.5500507&longitude=-105.7820674&sortOrder=asc&sortBy=distance&country=US&searchRadius=5000' 

response = requests.get(url) 
data = response.json() 
for item in data: 
    print(item['name']) 

Teil json Inhalt von dieser Seite lautet:

[{"id":"001i000001XR9dqAAD","website":"www.resortinternet.com","type":"partner","phoneNumber":"+1.970.262.3515","name":"Resortnet, LLC","logoPresent":"No","logoExtension":"","des":"Technology provider for destination resorts","translatedName":"ResortInternet","dbaName":"ResortInternet","PR":"NA","AN":"6244306","accountType":["Reseller"],"contentType":"parent","countries":["US"],"HSA":[],"countriesAndHsa":["US"],"premierSolutionPartner":false,"premierBusinessPartner":false,"solutionPartner":true,"businessPartner":false,"advancedSpecialistBarcodePrinterSupplies":false,"advancedSpecialistCardPrinters":false,"advancedSpecialistSupplies":false,"advancedSpecialistWirelessNetworks":false,"advancedSpecialistPrintEngines":false,"advancedSpecialistRfid":false,"specialistBarcodePrinterSupplies":false,"specialistCardPrinters":false,"specialistSupplies":false,"specialistWirelessNetworks":false,"specialistPrintEngines":false,"specialistRfid":false,"advancedRepairSpecialistLabelPrinter":false,"advancedRepairSpecialistCardPrinter":false,"advancedRepairSpecialistMobilePrinter":false,"advancedRepairSpecialistPrintEngine":false,"repairSpecialistLabelPrinter":false,"repairSpecialistCardPrinter":false,"repairSpecialistMobilePrinter":false,"repairSpecialistPrintEngine":false,"registeredResellerNoSpecialization":false,"pmiWraps":[{"programName":"Solution Partner","category":"Reseller","id":"001i000001XR9dqAAD_2","type":"pmiWrap","contentType":"child"}],"partnerLocations":[{"locationType":"Headquarters","addressLine1":"117 S 6th Ave.,","addressLine2":"PO Box 2718","city":"Frisco","state":"Colorado","zipCode":"80443","country":"United States","phone":"(970) 262-3515","fax":"(970) 668-9431","latlon":"39.5754576,-106.0952117","distance":16.8,"countryCode":"US","HSA":[],"id":"001i000001XR9dqAAD_0","type":"partnerLocation","contentType":"child"},{"locationType":"Primary Location","addressLine1":"117 S 6th Ave.,","city":"Frisco","state":"Colorado","zipCode":"80443","country":"United States","phone":"+1.970.262.3515","latlon":"39.5754576,-106.0952117","distance":16.8,"countryCode":"US","HSA":[],"id":"001i000001XR9dqAAD_1","type":"partnerLocation","contentType":"child"},{"locationType":"Address","addressLine1":"RESORTINTERNET\r2718:FRISCO:80443\r117 S 6TH AVERM UNIT 2","city":"Frisco","state":"Colorado","stateCode":"CO","zipCode":"80443","country":"United States","latlon":"39.5744309,-106.0975203","distance":16.9,"countryCode":"US","HSA":[],"id":"001i000001XR9dqAAD_100","type":"partnerLocation","contentType":"child"}],"verticalHierarchyWraps":[],"primaryLocation":{"locationType":"Headquarters","addressLine1":"117 S 6th Ave.,","addressLine2":"PO Box 2718","city":"Frisco","state":"Colorado","zipCode":"80443","country":"United States","phone":"(970) 262-3515","fax":"(970) 668-9431","latlon":"39.5754576,-106.0952117","distance":16.8,"countryCode":"US","HSA": 

Antwort

1

Ich glaube nicht, dass ein Problem mit Ihrem Code vorliegt. Wenn Sie len(data) überprüfen, gibt es 10 zurück, was bedeutet, dass die Ergebnisliste nur 10 (große) JSON-Objekte enthält.

Gibt es einen Grund, warum Sie mehr als 10 erwarten, oder versuchen Sie, auf die Eigenschaft name von etwas in jedem dieser größeren Objekte zuzugreifen?

+0

Danke Emersonct, für Ihre Antwort. Ich habe auch die Länge überprüft. Jetzt macht es mehr Sinn für mich als Starter. An diesem Punkt sollte ich an Selen denken, nehme ich an. – SIM

+0

@ SMth80: Sie sollten das eigentlich nicht tun müssen, um mehr Ergebnisse zu erhalten. Beachten Sie, dass in der URL, die Sie verwenden, das Argument Querystring steht: '& numRows = 10'. Das zu einer größeren Zahl zu ändern (oder es zu entfernen?) Sollte helfen. – Emersonct

+0

Wenn auch das nicht genug ist, denke ich, dass man alle Ergebnisse durchlaufen lassen kann, indem man den Aufrufparameter 'start' um den 'numRows' Betrag jedes Aufrufs erhöht, bis keine weiteren Ergebnisse zurückgegeben werden. – Emersonct

1

Ihre JSON ist ein Array von Objekten, also wenn Sie Schleife durch die Daten sind nicht Erhalten Sie das Array in Ihrer item Variable, sondern erhalten Sie stattdessen den Index des Arrays.

Sie können die Array erhalten, indem das Element Variable als Index verwendet, und wenn Sie einen Verweis auf das Array haben, können Sie dann Eigenschaft Objekte wie Name lesen:

So:

for index in data: 
    item = data[index] 
    print(item['name']) 

hier ist es in JavaScript:

<script> 
 
var data = [ 
 
    { 
 
     "id":"001i000001XR9dqAAD", 
 
     "website":"www.resortinternet.com", 
 
     "type":"partner", 
 
     "phoneNumber":"+1.970.262.3515", 
 
     "name":"Resortnet, LLC", 
 
     "logoPresent":"No", 
 
     "logoExtension":"", 
 
     "des":"Technology provider for destination resorts", 
 
     "translatedName":"ResortInternet", 
 
     "dbaName":"ResortInternet", 
 
     "PR":"NA", 
 
     "AN":"6244306", 
 
     "accountType":[ 
 
     "Reseller" 
 
     ], 
 
     "contentType":"parent", 
 
     "countries":[ 
 
     "US" 
 
     ], 
 
     "HSA":[ 
 

 
     ], 
 
     "countriesAndHsa":[ 
 
     "US" 
 
     ], 
 
     "premierSolutionPartner":false, 
 
     "premierBusinessPartner":false, 
 
     "solutionPartner":true, 
 
     "businessPartner":false, 
 
     "advancedSpecialistBarcodePrinterSupplies":false, 
 
     "advancedSpecialistCardPrinters":false, 
 
     "advancedSpecialistSupplies":false, 
 
     "advancedSpecialistWirelessNetworks":false, 
 
     "advancedSpecialistPrintEngines":false, 
 
     "advancedSpecialistRfid":false, 
 
     "specialistBarcodePrinterSupplies":false, 
 
     "specialistCardPrinters":false, 
 
     "specialistSupplies":false, 
 
     "specialistWirelessNetworks":false, 
 
     "specialistPrintEngines":false, 
 
     "specialistRfid":false, 
 
     "advancedRepairSpecialistLabelPrinter":false, 
 
     "advancedRepairSpecialistCardPrinter":false, 
 
     "advancedRepairSpecialistMobilePrinter":false, 
 
     "advancedRepairSpecialistPrintEngine":false, 
 
     "repairSpecialistLabelPrinter":false, 
 
     "repairSpecialistCardPrinter":false, 
 
     "repairSpecialistMobilePrinter":false, 
 
     "repairSpecialistPrintEngine":false, 
 
     "registeredResellerNoSpecialization":false, 
 
     "pmiWraps":[ 
 
     { 
 
      "programName":"Solution Partner", 
 
      "category":"Reseller", 
 
      "id":"001i000001XR9dqAAD_2", 
 
      "type":"pmiWrap", 
 
      "contentType":"child" 
 
     } 
 
     ], 
 
     "partnerLocations":[ 
 
     { 
 
      "locationType":"Headquarters", 
 
      "addressLine1":"117 S 6th Ave.,", 
 
      "addressLine2":"PO Box 2718", 
 
      "city":"Frisco", 
 
      "state":"Colorado", 
 
      "zipCode":"80443", 
 
      "country":"United States", 
 
      "phone":"(970) 262-3515", 
 
      "fax":"(970) 668-9431", 
 
      "latlon":"39.5754576,-106.0952117", 
 
      "distance":16.8, 
 
      "countryCode":"US", 
 
      "HSA":[ 
 

 
      ], 
 
      "id":"001i000001XR9dqAAD_0", 
 
      "type":"partnerLocation", 
 
      "contentType":"child" 
 
     }, 
 
     { 
 
      "locationType":"Primary Location", 
 
      "addressLine1":"117 S 6th Ave.,", 
 
      "city":"Frisco", 
 
      "state":"Colorado", 
 
      "zipCode":"80443", 
 
      "country":"United States", 
 
      "phone":"+1.970.262.3515", 
 
      "latlon":"39.5754576,-106.0952117", 
 
      "distance":16.8, 
 
      "countryCode":"US", 
 
      "HSA":[ 
 

 
      ], 
 
      "id":"001i000001XR9dqAAD_1", 
 
      "type":"partnerLocation", 
 
      "contentType":"child" 
 
     }, 
 
     { 
 
      "locationType":"Address", 
 
      "addressLine1":"RESORTINTERNET\r2718:FRISCO:80443\r117 S 6TH AVERM UNIT 2", 
 
      "city":"Frisco", 
 
      "state":"Colorado", 
 
      "stateCode":"CO", 
 
      "zipCode":"80443", 
 
      "country":"United States", 
 
      "latlon":"39.5744309,-106.0975203", 
 
      "distance":16.9, 
 
      "countryCode":"US", 
 
      "HSA":[ 
 

 
      ], 
 
      "id":"001i000001XR9dqAAD_100", 
 
      "type":"partnerLocation", 
 
      "contentType":"child" 
 
     } 
 
     ], 
 
     "verticalHierarchyWraps":[ 
 

 
     ], 
 
     "primaryLocation":{ 
 
     "locationType":"Headquarters", 
 
     "addressLine1":"117 S 6th Ave.,", 
 
     "addressLine2":"PO Box 2718", 
 
     "city":"Frisco", 
 
     "state":"Colorado", 
 
     "zipCode":"80443", 
 
     "country":"United States", 
 
     "phone":"(970) 262-3515", 
 
     "fax":"(970) 668-9431", 
 
     "latlon":"39.5754576,-106.0952117", 
 
     "distance":16.8, 
 
     "countryCode":"US" 
 
     } 
 
    } 
 
]; 
 
for (var index in data) 
 
{ 
 
    
 
    var item=data[index]; 
 
    console.log(item["name"]); 
 
    console.log(item); 
 

 
} 
 
</script>

+0

Danke für Ihre Antwort Alexander Higgins. Es hat nicht geklappt. Ich bekomme jetzt diesen Fehler: "Listenindizes müssen Ganzzahlen oder Slices sein, nicht dict" – SIM