首页 文章

PyPi的JSON API - 如何列出包?

提问于
浏览
11

有一个JSON API for PyPI允许获取包的数据:

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

但是,是否可以通过GET调用获取所有PyPI包(或者,例如,最近的)的列表?

4 回答

  • 0

    最简单的方法是使用simple index at PyPI列出所有包,没有开销 . 然后,您可以通过对问题中提到的URL执行GET请求来单独请求每个包的JSON .

  • 10

    我知道您要求从JSON API执行此操作,但您可以使用XML-RPC api轻松获取此信息,而无需解析HTML .

    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()
    
  • 9

    我试过了this answer,但它不能用 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()')]
    
  • 1

    这是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...
    

相关问题