2017-12-14 1 views
0

저는 Zillow의 API를 사용하고 GetDeepComps API를 호출합니다. API를 사용하면 URL에 주소를 포함시킨 다음 응답을 반환 할 수 있습니다.Python에서 다른 URL로 API를 여러 번 호출

x 주소로 가득 찬 텍스트 파일을 읽고 파일에 주소가 남아 있지 않을 때까지 API를 x 번 호출하여 API에 여러 요청을 보내려합니다.

변수 formatted_addresses의 값은 주소가 들어있는 텍스트 파일에서 읽히는 행에 따라 변경되어야합니다.

또한 주소와 해당 우편 번호를 사전에 저장하려고합니다. 여기에 현재 코드가 있습니다.

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() 

어떻게하면 좋을까요?

답변

1

나는 우리가 그런

import urllib 
encoded_addr = urllib.quote_plus(addr) 

을 정의 할 곳이

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

같은 API_KEYformatted_address 사용 str.format()을 삽입 할 수 있습니다,이

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

같은 몇 가지 기본 URL을 정의 할 모든 것이 이렇게 보일 것입니다. :

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()