2017-10-16 95 views
-7

我想用Python訪問廣告公司的API,並且基於我從他們獲得的文檔,我需要在json api url中使用params [group_by] = zone_id(例如) 。使用Python訪問API

以下是我在Python設置代碼的方式:

https://i.stack.imgur.com/2QUEf.png

正如你可以從圖片中看到我基本上使用進行urlencode來創建一個字典,從中我加的參數網址。問題是當我嘗試在字典中設置params [group_by]時。

以下是錯誤我得到當我嘗試運行代碼:

https://i.stack.imgur.com/rvgNZ.png

它說,我有一個NameError:GROUP_BY沒有定義。

我需要提及的是,如果我不添加params [group_by]完全像這樣, url不起作用。我的猜測是代碼不起作用,因爲它認爲「group_by」是一個列表。

有人請指教,關於如何解決這個問題?

謝謝。

+1

http://idownvotedbecau.se/imageofcode,HTTP:// idownvotedbecau。 se/imageofanexception/ – jonrsharpe

+0

是的,您需要在URL參數中使用該格式,但這並不意味着您需要調用其餘代碼中的變量。你可以稱它爲你喜歡的,但它需要是一個有效的Python標識符。另外,請不要張貼代碼圖片;在問題中作爲文本發佈代碼。 –

+0

正如@DanielRoseman所說,如果您需要幫助,請發佈更有效的問題。你可能想看看https://stackoverflow.com/help/how-to-ask。 – vipertherapper

回答

0

這裏是我用過,爲了嘗試添加該參數在我試圖訪問的URL代碼:

import urllib.parse 
    import requests 

    main_api = 'http://report.propellerads.com/?' 

    while True: 
     action = 'getStats' 
     key = '' 
     date_range = 'custom' 
     date_start = '2017-09-06' 
     date_end = '2017-09-06' 
     params[group_id] = 'zone_id' 

     if action == 'quit' or action == 'q': 
      break 

     url = main_api + urllib.parse.urlencode({'action': action, 'key': key, 'date_range': date_range, 'params[group_id]': params}) 
     print(url) 

     json_data = requests.get(url).json() 

     json_status = json_data['result']['status'] 
     print("API Status: ", json_status) 

     if json_status == True: 
      for each in json_data['result']['rows']: 
       print("date: ",each['date']) 
       print("show: ",each['show']) 
       print("click: ",each['click']) 
       print("convers: ",each['convers']) 
       print("convrate: ",each['convrate']) 
       print("cpm: ",each['cpm']) 
       print("ctr: ",each['ctr']) 
       print("profit: ",each['profit']) 
       print()