2017-08-23 65 views
4

事實上,這個問題可能會更好地表達爲實現這一目標的最佳實踐的要求。這很令人沮喪,因爲這應該很容易。什麼python模塊替換urllib2用於python 3和燒瓶?

我下面通過實例書瓶的教程。我使用的是最新版本的Python 3.在文本中使用的urllib2的不能爲Python 3.從文本中找到,我們需要的urllib2下載數據,並urllib的正確編碼的參數。只是一個函數,get_weather,因爲我找不到可用的更新方法。

我將列出的代碼中的相關行來顯示什麼,我試圖完成。我正在使用最新版本的python 3.我不會列出模板文件,因爲直到我嘗試下載json api時,問題才顯示出來。

因此,該文件的第一個變化,包括urllib而JSON進口。這本書是從2015年的時候urllib2可用。我們正在嘗試從openwheathermap.org獲取天氣。由於找不到urllib2,我稍微修改了本書的代碼。

WEATHER_URL = "http://api.openweathermap.org/data/2.5/weather?q={}&APPID=myappid" 

def get_weather(query): 
    query = urllib.parse.quote(query) 
    url = WEATHER_URL.format(query) 
    data = urllib.request.urlopen(url).read() 
    parsed = json.loads(str(data)) 
    weather = None 
    if parsed.get('weather'): 
    weather = {'description': parsed['weather'][0]['description'], 
       'temperature': parsed['main']['temp'], 
       'city': parsed['name'], 
       'country': parsed['sys']['country'] 
       } 
    return weather 

任何意見,將不勝感激。
謝謝, 布魯斯

+2

我想請求庫是非常受歡迎的。 – Vasif

+0

作爲urllib2的文檔中所述: 的urllib2的模塊已被跨越幾個模塊拆分在Python 3名爲urllib.request裏和urllib.error裏。當您將源文件轉換爲Python 3時,2to3工具將自動適應導入。 –

+0

您談論的是什麼問題?當然,你可以使用標準庫'urllib'包來做到這一點。您只需以正確的方式導入模塊。 – Abdou

回答

5

您可以使用具有普遍簡潔的界面做HTTP操作requests庫。

網址庫。 http://www.python-requests.org/en/master/

你可以在你的shell/CMD安裝做

pip install requests 

在代碼中,

import requests 
response = requests.get(WEATHER_URL.format(query)) 
weather = response.json() # or something as easy as this. 
+0

urllib.parse.quote )呢?在獲取請求之前從表單獲取數據時是否需要轉義任何字符? –