欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何使用resuests訪問Python包索引的JSONAPI

本篇內(nèi)容介紹了“如何使用resuests訪問Python包索引的JSON API”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

在旌德等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站制作,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站設(shè)計(jì),全網(wǎng)整合營銷推廣,外貿(mào)網(wǎng)站建設(shè),旌德網(wǎng)站建設(shè)費(fèi)用合理。

PyPI 的 JSON API 是一種機(jī)器可直接使用的數(shù)據(jù)源,你可以訪問和你瀏覽網(wǎng)站時(shí)相同類型的數(shù)據(jù)。

PyPI(Python 軟件包索引)提供了有關(guān)其軟件包信息的 JSON API。本質(zhì)上,它是機(jī)器可以直接使用的數(shù)據(jù)源,與你在網(wǎng)站上直接訪問是一樣的的。例如,作為人類,我可以在瀏覽器中打開 Numpy 項(xiàng)目頁面,點(diǎn)擊左側(cè)相關(guān)鏈接,查看有哪些版本,哪些文件可用以及發(fā)行日期和支持的 Python 版本等內(nèi)容:

如何使用resuests訪問Python包索引的JSON API

NumPy project page

但是,如果我想編寫一個(gè)程序來訪問此數(shù)據(jù),則可以使用 JSON API,而不必在這些頁面上抓取和解析 HTML。

順便說一句:在舊的 PyPI 網(wǎng)站上,還托管在 pypi.python.org 時(shí),NumPy 的項(xiàng)目頁面位于 pypi.python.org/pypi/numpy,訪問其 JSON API 也很簡單,只需要在最后面添加一個(gè) /json ,即 https://pypi.org/pypi/numpy/json。現(xiàn)在,PyPI 網(wǎng)站托管在 pypi.org,NumPy 的項(xiàng)目頁面是 pypi.org/project/numpy。新站點(diǎn)不會有單獨(dú)的 JSON API URL,但它仍像以前一樣工作。因此,你不必在 URL 后添加 /json,只要記住 URL 就夠了。

你可以在瀏覽器中打開 NumPy 的 JSON API URL,F(xiàn)irefox 很好地渲染了數(shù)據(jù):

如何使用resuests訪問Python包索引的JSON API

JSON rendered in Firefox

你可以查看 info,release 和 urls 其中的內(nèi)容?;蛘撸憧梢詫⑵浼虞d到 Python Shell 中,以下是幾行入門教程:

import requestsurl = "https://pypi.org/pypi/numpy/json"r = requests.get(url)data = r.json()

獲得數(shù)據(jù)后(調(diào)用 .json() 提供了該數(shù)據(jù)的 字典),你可以對其進(jìn)行查看:

如何使用resuests訪問Python包索引的JSON API

Inspecting data

查看 release 中的鍵:

如何使用resuests訪問Python包索引的JSON API

Inspecting keys in releases

這表明 release 是一個(gè)以版本號為鍵的字典。選擇一個(gè)并查看以下內(nèi)容:

如何使用resuests訪問Python包索引的JSON API

Inspecting version

每個(gè)版本都包含一個(gè)列表,release 包含 24 項(xiàng)。但是每個(gè)項(xiàng)目是什么?由于它是一個(gè)列表,因此你可以索引第一項(xiàng)并進(jìn)行查看:

如何使用resuests訪問Python包索引的JSON API

Indexing an item

這是一個(gè)字典,其中包含有關(guān)特定文件的詳細(xì)信息。因此,列表中的 24 個(gè)項(xiàng)目中的每一個(gè)都與此特定版本號關(guān)聯(lián)的文件相關(guān),即在 https://pypi.org/project/numpy/1.20.1/#files 列出的 24 個(gè)文件。

你可以編寫一個(gè)腳本在可用數(shù)據(jù)中查找內(nèi)容。例如,以下的循環(huán)查找?guī)в?sdist(源代碼包)的版本,它們指定了 requires_python 屬性并進(jìn)行打印:

for version, files in data['releases'].items():    for f in files:        if f.get('packagetype') == 'sdist' and f.get('requires_python'):            print(version, f['requires_python'])

如何使用resuests訪問Python包索引的JSON API

sdist files with requires_python attribute

piwheels

去年,我在 piwheels 網(wǎng)站上實(shí)現(xiàn)了類似的 API。piwheels.org 是一個(gè) Python 軟件包索引,為樹莓派架構(gòu)提供了 wheel(預(yù)編譯的二進(jìn)制軟件包)。它本質(zhì)上是 PyPI 軟件包的鏡像,但帶有 Arm wheel,而不是軟件包維護(hù)者上傳到 PyPI 的文件。

由于 piwheels 模仿了 PyPI 的 URL 結(jié)構(gòu),因此你可以將項(xiàng)目頁面 URL 的 pypi.org 部分更改為 piwheels.org。它將向你顯示類似的項(xiàng)目頁面,其中詳細(xì)說明了構(gòu)建的版本和可用的文件。由于我喜歡舊站點(diǎn)允許你在 URL 末尾添加 /json 的方式,所以我也支持這種方式。NumPy 在 PyPI 上的項(xiàng)目頁面為 pypi.org/project/numpy,在 piwheels 上,它是 piwheels.org/project/numpy,而 JSON API 是 piwheels.org/project/numpy/json 頁面。

沒有必要重復(fù) PyPI API 的內(nèi)容,所以我們提供了 piwheels 上可用內(nèi)容的信息,包括所有已知發(fā)行版的列表,一些基本信息以及我們擁有的文件列表:

如何使用resuests訪問Python包索引的JSON API

JSON files available in piwheels

與之前的 PyPI 例子類似,你可以創(chuàng)建一個(gè)腳本來分析 API 內(nèi)容。例如,對于每個(gè) NumPy 版本,其中有多少 piwheels 文件:

import requests url = "https://www.piwheels.org/project/numpy/json"package = requests.get(url).json() for version, info in package['releases'].items():    if info['files']:        print('{}: {} files'.format(version, len(info['files'])))    else:        print('{}: No files'.format(version))

此外,每個(gè)文件都包含一些元數(shù)據(jù):

如何使用resuests訪問Python包索引的JSON API

Metadata in JSON files in piwheels

方便的是 apt_dependencies 字段,它列出了使用該庫所需的 Apt 軟件包。本例中的 NumPy 文件,或者通過 pip 安裝 Numpy,你還需要使用 Debian 的 apt 包管理器安裝 libatlas3-base 和 libgfortran。

以下是一個(gè)示例腳本,顯示了程序包的 Apt 依賴關(guān)系:

import requests def get_install(package, abi):    url = 'https://piwheels.org/project/{}/json'.format(package)    r = requests.get(url)    data = r.json()    for version, release in sorted(data['releases'].items(), reverse=True):        for filename, file in release['files'].items():            if abi in filename:                deps = ' '.join(file['apt_dependencies'])                print("sudo apt install {}".format(deps))                print("sudo pip3 install {}=={}".format(package, version))                return get_install('opencv-python', 'cp37m')get_install('opencv-python', 'cp35m')get_install('opencv-python-headless', 'cp37m')get_install('opencv-python-headless', 'cp35m')

我們還為軟件包列表提供了一個(gè)通用的 API 入口,其中包括每個(gè)軟件包的下載統(tǒng)計(jì):

import requests  url = "https://www.piwheels.org/packages.json" packages = requests.get(url).json() packages = {     pkg: (d_month, d_all)     for pkg, d_month, d_all, *_ in packages }  package = 'numpy' d_month, d_all = packages[package]  print(package, "has had", d_month, "downloads in the last month") print(package, "has had", d_all, "downloads in total")

pip search

pip search 因?yàn)槠?XMLRPC 接口過載而被禁用,因此人們一直在尋找替代方法。你可以使用 piwheels 的 JSON API 來搜索軟件包名稱,因?yàn)檐浖募鲜窍嗤模?/p>

#!/usr/bin/python3import sys import requests PIWHEELS_URL = 'https://www.piwheels.org/packages.json' r = requests.get(PIWHEELS_URL)packages = {p[0] for p in r.json()} def search(term):    for pkg in packages:        if term in pkg:            yield pkg if __name__ == '__main__':    if len(sys.argv) == 2:        results = search(sys.argv[1].lower())        for res in results:            print(res)    else:        print("Usage: pip_search TERM")

有關(guān)更多信息,參考 piwheels 的 JSON API 文檔.

“如何使用resuests訪問Python包索引的JSON API”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

分享題目:如何使用resuests訪問Python包索引的JSONAPI
文章URL:http://chinadenli.net/article28/ppcccp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、網(wǎng)站制作、品牌網(wǎng)站建設(shè)、企業(yè)建站、商城網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司
91爽人人爽人人插人人爽| 久久大香蕉一区二区三区| 开心激情网 激情五月天| 欧美日韩亚洲精品内裤| 97精品人妻一区二区三区麻豆| 国产一区二区三区午夜精品| 日韩精品一区二区三区av在线| 色婷婷在线视频免费播放| 欧美一区二区三区播放| 亚洲精品成人午夜久久| 久久机热频这里只精品| 日韩欧美三级视频在线| 日韩蜜桃一区二区三区| 日韩免费av一区二区三区| 久久99青青精品免费观看| 国产精品日韩精品最新| 成年女人午夜在线视频| 日韩精品综合免费视频| 东京热一二三区在线免| 精品一区二区三区人妻视频| 亚洲妇女作爱一区二区三区| 偷拍美女洗澡免费视频| 国产偷拍盗摄一区二区| 欧美日韩国产精品黄片| 亚洲人午夜精品射精日韩| 精品日韩国产高清毛片| 国产超薄黑色肉色丝袜| 欧美黑人巨大一区二区三区| 黄片三级免费在线观看| 亚洲国产综合久久天堂| 在线观看视频日韩精品| 成人精品一区二区三区在线| 国自产拍偷拍福利精品图片| 国产精品亚洲欧美一区麻豆| 亚洲一区二区精品免费视频| 国产日韩精品激情在线观看| 欧美精品日韩精品一区| 日本一区不卡在线观看| 五月天婷亚洲天婷综合网| 精品欧美日韩一区二区三区 | 麻豆精品视频一二三区|