2017-12-14 2 views
0

Ich benutze Zillows API und einen Anruf an die GetDeepComps API. Die API ermöglicht Ihnen, eine Adresse in die URL aufzunehmen und gibt dann eine Antwort zurück.Aufruf einer API mehrere Male mit einer anderen URL in Python

Ich möchte mehrere Anfragen an die API senden, indem Sie eine Textdatei voller x-Adressen lesen und dann die API x-mal aufrufen, bis keine weiteren Adressen in der Datei vorhanden sind.

Der Wert der Variablen formatted_addresses sollte sich abhängig von der Zeile ändern, die in der Textdatei mit den Adressen gelesen wird.

Ich möchte auch die Adresse und die entsprechende Postleitzahl in einem Wörterbuch speichern. Hier ist mein aktueller Code.

def read_addresses_and_append_zip_codes(): 
    f = open("addresses.txt", "r") 
    addresses = f.readlines() 
    addresses = [x.strip() for x in addresses] 
    print addresses 
    formatted_address = "2723+Green+Leaf+Way" 
    DEEP_SEARCH_RESULTS_BASE_URL = "http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id=" + API_KEY + "&address=" + formatted_address + "&citystatezip=San%20Antonio%2C%20TX" 
    response = requests.get(DEEP_SEARCH_RESULTS_BASE_URL) 
    content = xmltodict.parse(response.content) 
    zip_code = content['SearchResults:searchresults']['response']['results']['result']['address']['zipcode'] 
    print zip_code 


read_addresses_and_append_zip_codes() 

Was ist eine gute Möglichkeit, dies zu tun?

Antwort

1

würde ich eine Basis-URL wie diese

BASE_URL = "http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id={api_key}&address={encoded_addr}&citystatezip=San%20Antonio%2C%20TX" 

definieren dann können Sie die API_KEY und formatted_address mit str.format() einsetzen wie diese

new_url = BASE_URL.format(**{'api_key': API_KEY, 'encoded_addr': encoded_addr}) 

wo wir

definieren
import urllib 
encoded_addr = urllib.quote_plus(addr) 

Dann Das Ganze würde ungefähr so ​​aussehen :

def read_addresses_and_append_zip_codes(): 
    zips = {} 
    BASE_URL = "http://www.zillow.com/webservice/GetDeepSearchResults.htm?zws-id={0}&address={1}&citystatezip=San%20Antonio%2C%20TX" 
    with open("addresses.txt", "r") as f: 
     addresses = f.readlines() 
     addresses = [x.strip() for x in addresses] 
     # print addresses 
     for addr in addresses: 
      encoded_addr = urlparse.quote_plus(addr) 
      response = requests.get(BASE_URL.format(**{'api_key': API_KEY, 'encoded_addr': encoded_addr})) 
      content = xmltodict.parse(response.content) 
      zip_code = content['SearchResults:searchresults']['response']['results']['result']['address']['zipcode'] 
      zips[addr] = zip_code 


read_addresses_and_append_zip_codes() 
Verwandte Themen