国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【譯】Python3中進行HTTP請求的4種方式

lordharrd / 641人閱讀

摘要:由于是同一起進行分發和安裝的,因此無需使用進行安裝。首先用進行安裝向發送請求輸出結果我們剛剛向發出了一個請求,同時創建了一個名為的對象,之后使用內置的解碼器來處理我們請求的內容。當每個請求成功后,響應內容將被添加到數據列表中。

翻譯:瘋狂的技術宅
原文標題:HTTP Requests in Python 3
原文鏈接:https://www.twilio.com/blog/2...
本文首發微信公眾號:充實的腦洞

相關文章:【譯】深入解析Node.js中5種發起HTTP請求的方法

python包索引(PyPI)提供了超過10萬個代碼庫的包,它能夠幫助python程序員完成許多工作,無論是構建web應用程序還是分析數據。另外PyPI還提供了很多諸如 twilio 之類的API的輔助庫。

下面讓我們通過使用4個不同的 Python HTTP 庫來學習如何從 RESTful API 檢索和解析 JSON 數據,以此來演示PyPI包的強大功能。

文中的每個示例都包含以下內容:

定義要解析的URL,我們將使用Spotify API,因為它不需要在請求時進行身份驗證。

創建一個 HTTP GET 去請求這個URL。

解析返回的JSON數據。

我們將要使用的四個庫用了不同的方法得到同一個結果。如果你把結果輸出,將會看到一個有Spotify搜索結果的字典:

*注意:結果可能會根據你使用的Python版本而有所不同。在這篇文章中,所有的代碼都使用Python 3編寫。 如果你仍在使用Python 2.X,那么請考慮為Python 3設置一個virtualenv。
以下說明將幫助您使用virtualenv與Python 3:

為Python 3測試創建一個名為pythreetest的目錄。

一旦安裝了virtualenv,從項目目錄中執行以下命令:

使用以下命令創建一個新的virtualenv:

virtualenv -p python3 myvenv

使用source命令激活myvenv

source myvenv/bin/activate

現在你將能夠使用pip安裝需要的庫,并在virtualenv中使用Python 3啟動解釋器,在那里您可以成功導入包。

urllib

urllib是一個內置在Python標準庫中的模塊,并使用http.client來實現HTTP和HTTPS協議的客戶端。 由于urllib是同Python一起進行分發和安裝的,因此無需使用 pip 進行安裝。 如果你重視穩定性,那么這就是給你準備的。 twilio-python助手庫就使用了urllib。

urllib同其他庫比起來需要做更多的工作。 例如:你必須在發出HTTP請求之前創建一個URL對象。

import urllib.request
import urllib.parse

url = "https://api.spotify.com/v1/search?type=artist&q=snoop"
f = urllib.request.urlopen(url)
print(f.read().decode("utf-8"))

在上面的例子中,我們將請求URL發送到CGI的stdin,并讀取返回給我們的數據。

Requests

Requests是Python社區中最喜歡的庫,因為它簡潔易用。 Requests由urllib3提供支持,有玩笑說這是“唯一的非轉基因HTTP庫,適合人類消費”。

Requests 抽象了大量的程式化的代碼,使得HTTP請求比使用內置urllib庫更簡單。

首先用pip進行安裝

pip install requests

向 Spotify 發送請求

import requests

r = requests.get("https://api.spotify.com/v1/search?type=artist&q=snoop")
r.json()

輸出結果:

from pprint import pprint
pprint(r.json())

我們剛剛向Spotify發出了一個GET請求,同時創建了一個名為rResponse 對象,之后使用內置的JSON解碼器來處理我們請求的內容。

Octopus

Octopus是為想要GET一切的開發人員準備的。它允許你多任務去訪問Spotify。就像它的名字一樣,這個庫使用線程并發地檢索和報告HTTP請求的完成情況,同時可以使用你所熟悉的庫。

或者,你可以使用 Tornado 的 IOLoop 進行異步請求,不過在這里就不盡興嘗試了。

通過pip安裝:

pip install octopus-http

Octopus的設置比前面的例子稍微多一些。 我們必須構建一個響應處理器,并使用內置的JSON庫對JSON進行編碼。

import json
 
from pprint import pprint
from octopus import Octopus
 
 
def create_request(urls):
    data = []
 
    otto = Octopus(
           concurrency=4, auto_start=True, cache=True, expiration_in_seconds=10
    )
 
    def handle_url_response(url, response):
        if "Not found" == response.text:
            print ("URL Not Found: %s" % url)
        else:
            data.append(response.text)
 
    for url in urls:
        otto.enqueue(url, handle_url_response)
 
    otto.wait()
 
    json_data = json.JSONEncoder(indent=None,
                                 separators=(",", ": ")).encode(data)
 
    return pprint(json_data)
 
 
print(create_request(["https://api.spotify.com/v1/search?type=artist&q=snoop",
                     "https://api.spotify.com/v1/search?type=artist&q=dre"]))

在上面的代碼片段中,我們定義了create_requests函數來使用線程Octopus請求。 我們從一個空的list開始,data,并創建Octopus類的一個實例dotto。 最后配置了默認設置。

然后我們構建響應處理器,其中的response參數是Octopus.Response的一個實例。 當每個請求成功后,響應內容將被添加到數據列表中。在響應處理器內部,我們可以使用Octopus類的主要方法。.enqueue方法用于加入新的URL。

我們指定.wait方法等待隊列中的所有URL完成加載,然后對JSON列表進行JSON編碼并打印結果。

吁,終于結束了。

HTTPie

HTTPie適用于希望快速與HTTP服務器、RESTful API 和 Web 服務進行交互的開發人員,它僅僅需要一行代碼。 這個庫是“一個可以讓你微笑的開源 CLI HTTP客戶端:用戶友好的 curl 替代方案”。雖然它可以不依賴Python環境,但是它可以通過Pip安裝,并用來創建HTTP請求。

pip install httpie

默認協議是HTTP,但您可以創建一個別名,并重置HTTPS為默認值,如下所示:

alias https="http —default-scheme=https"

之后創建請求:

https "https://api.spotify.com/v1/search?type=artist&q=snoop"

使用HTTPie僅需要URL就夠了。

最后的想法

Python 生態提供了許多與 JSON api 交互的選擇。雖然這些方法對于最簡單的請求是相似的, 但隨著 HTTP 請求的復雜性增加, 這些差異變得更加明顯。多進行嘗試, 看看哪一個最適合你的需求。你甚至可以嘗試用另一種語言, 如 Ruby。

關注微信公眾號:充實的腦洞, 一個技術宅的保留地

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/40802.html

相關文章

  • 】深入解析Node.js5發起HTTP請求方法

    摘要:在中有相當多的解決方案,其中有語言內置功能,也有開源社區貢獻的開發庫。缺點是與其他解決方案相比,用起來不是那么友好。默認情況下,可以解析響應,非常方便。與類似,是另一個流行的庫,主要用于瀏覽器中的請求,但也適用于。 翻譯:瘋狂的技術宅英文標題:5 Ways to Make HTTP Requests in Node.js原文鏈接:https://www.twilio.com/blog/...

    Tamic 評論0 收藏0
  • 】Python優雅技巧

    摘要:你可以進行如下操作需要注意的是這個竅門只適用于。在中就不需要進行操作了,因為它已經默認進行了。這里有幾個例子可以供你參考譯文出處本文根據的所譯,整個譯文帶有我自己的理解與思想,如果譯得不好或有不對之處還請同行朋友指點。 枚舉 不要這么做: i = 0 for item in iterable: print i, item i += 1 而是這樣: for...

    legendaryedu 評論0 收藏0
  • Centos下編安裝python3

    摘要:下載源碼包安裝的依賴首1 下載Python3源碼包 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz 2 安裝Python3的依賴 首先我們要先下載Python3的所有依賴包,否則安裝安裝完后會出現各種問題 yum install gcc patch libffi-deve...

    sanyang 評論0 收藏0
  • Centos下編安裝python3

    摘要:下載源碼包安裝的依賴首1 下載Python3源碼包 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz 2 安裝Python3的依賴 首先我們要先下載Python3的所有依賴包,否則安裝安裝完后會出現各種問題 yum install gcc patch libffi-deve...

    187J3X1 評論0 收藏0
  • [][Tkinter 教程02] Message 控件

    摘要:已獲原作者授權原系列地址控件控件用來展示一些文字短消息和控件有些類似但在展示文字方面比要靈活比如控件可以改變字體而控件只能使用一種字體它提供了一個換行對象以使文字可以斷為多行它可以支持文字的自動換行及對齊這里要澄清一下前面提到的控件可以改變 已獲原作者授權. 原系列地址: Python Tkinter Message 控件 Message 控件用來展示一些文字短消息. Message...

    JowayYoung 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<