programing

PyPi용 JSON API - 패키지 목록 작성 방법

powerit 2023. 3. 4. 15:14
반응형

PyPi용 JSON API - 패키지 목록 작성 방법

패키지 데이터를 가져올 수 있는 PyPI용 JSON API가 있습니다.

http://pypi.python.org/pypi/<package_name>/json
http://pypi.python.org/pypi/<package_name>/<version>/json

단, GET 콜을 사용하여 모든 PyPI 패키지(또는 최근 패키지 등)의 목록을 얻을 수 있습니까?

가장 쉬운 방법은 PyPI에서 오버헤드 없이 모든 패키지를 나열하는 단순 인덱스를 사용하는 것입니다.그런 다음 질문에 언급된 URL에 대해 GET 요청을 수행하여 각 패키지의 JSON을 개별적으로 요청할 수 있습니다.

JSON API에서 이 방법을 요청하신 것은 알고 있습니다만, HTML을 해석할 필요 없이 XML-RPC API를 사용하여 이 정보를 매우 쉽게 얻을 수 있습니다.

try:
     import xmlrpclib
except ImportError:
     import xmlrpc.client as xmlrpclib

client = xmlrpclib.ServerProxy('https://pypi.python.org/pypi')
# get a list of package names
packages = client.list_packages()

대답을 시도해 봤는데 효과가 없어요.Python 3.6

lxml 패키지를 사용하여 HTML 파싱이 포함된 솔루션을 하나 찾았는데 pip 명령으로 설치해야 합니다.

pip install lxml


그리고 다음 토막을 사용해 보세요.

from lxml import html
import requests

response = requests.get("https://pypi.org/simple/")

tree = html.fromstring(response.content)

package_list = [package for package in tree.xpath('//a/text()')]

메모: 이와 같은 작업을 단순화하기 위해 자체 Python 모듈을 구현했습니다.다음을 사용하여 설치할 수 있습니다.pip:

pip install jk_pypiorgapi

이 모듈은 사용이 매우 간단합니다.API 인터페이스를 나타내는 개체를 인스턴스화한 후 다음과 같이 사용할 수 있습니다.

import jk_pypiorgapi

api = jk_pypiorgapi.PyPiOrgAPI()
n = len(api.listAllPackages())
print("Number of packages on pypi.org:", n)

이 모듈에서는 특정 패키지에 대한 정보를 다운로드하는 기능도 제공합니다.pypi.org:

import jk_pypiorgapi
import jk_json

api = jk_pypiorgapi.PyPiOrgAPI()
jData = api.getPackageInfoJSON("jk_pypiorgapi")
jk_json.prettyPrint(jData)

이 기능도 도움이 될 수 있습니다.

PEP 691에서는 JSON 응답을 요청하면 Simple API를 통해 이 정보를 얻을 수 있습니다.

curl --header 'Accept: application/vnd.pypi.simple.v1+json' https://pypi.org/simple/ | jq

여기 Bash 원라이너가 있습니다.

curl -sG -H 'Host: pypi.org' -H 'Accept: application/json' https://pypi.org/pypi/numpy/json | awk -F "description\":\"" '{ print $2 }' |cut -d ',' -f 1

# NumPy is a general-purpose array-processing package designed to...

언급URL : https://stackoverflow.com/questions/21419009/json-api-for-pypi-how-to-list-packages

반응형