【问题标题】:Python Request Libary Error 404 Handling Soundcloud APIPython 请求库错误 404 处理 Soundcloud API
【发布时间】:2014-09-10 06:06:00
【问题描述】:

所以我正在尝试创建一个程序,该程序采用最近上传的 Soundcloud 曲目的类型和位置并将它们显示在地图上。我正在尝试使用 Soundcloud API 收集数据,但是在程序执行时随机点抛出 HTTPError。这是我的代码:

import soundcloud
import urllib2

client = soundcloud.Client(client_id="xxxxx",
                       client_secret="xxxxx",
                       username="xxxx",
                       password="xxxx")

def main():
        for trackId in getAllTrackId('tracks/'):
            try:
                trackId = str(trackId)
                userId = str(client.get('tracks/' + trackId).user_id)
                genre = client.get('tracks/' + trackId).genre
                country = client.get('users/' + userId).country
                city = client.get('users/' + userId).city
                user = client.get('tracks/' + trackId).user
            except urllib2.HTTPError, e:
                print e.geturl()
            if (type(city) != None) & (type(country) != None) & (type(genre) != None):
                try:
                    print 'User: ' + userId + '\t\tLocation: ' + city + ', ' + country + '\t\tGenre: ' + genre
                except:
                    print trackId

def getAllTrackId(path):
    items=[]
    page_size=200
    offset=0

    page = client.get(path, limit=page_size, offset=offset)
    #while (len(page) != 0):
    while (offset<=1000):
        for item in page:
            items.append(item.id)
        offset += page_size
        page = client.get(path, limit=page_size, offset=offset)

    return items

main()

我试图弄清楚如何捕获错误,以及为什么首先抛出它。我是编程新手,所以我确信我的代码中有很多错误,但如果有人能帮助我解决这个问题,那就太棒了:)

(env)xxxxxxx-MacBook-Pro-2:soundcloudmap xxxxxxxxxx$ python soundcloudmap.py
User: 1278531       Location: Detroit, United States        Genre: HSB
User: 1139662       Location: Brasilia, Brazil      Genre: Beat
159333532
User: 23129248      Location: Cadiz, Spain      Genre: Breaks
159333523
User: 10761166      Location: Wadsworth, United States      Genre: Say

Traceback (most recent call last):
  File "soundcloudmap.py", line 43, in <module>
    main()
  File "soundcloudmap.py", line 28, in main
    userId = str(client.get('tracks/' + trackId).user_id)
  File "/Users/michaelspearman/code/soundcloudmap/env/lib/python2.7/site-packages/soundcloud/client.py", line 130, in _request
    return wrapped_resource(make_request(method, url, kwargs))
  File "/Users/michaelspearman/code/soundcloudmap/env/lib/python2.7/site-packages/soundcloud/request.py", line 134, in make_request
    result.raise_for_status()
  File "/Users/michaelspearman/code/soundcloudmap/env/lib/python2.7/site-packages/requests/models.py", line 795, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 404 Client Error: Not Found

编辑: 要捕获错误,我只需要正确地遵循错误的路径.. duhh

    except urllib2.HTTPError, e:

应该是

    except requests.exceptions.HTTPError as e:

但是我仍然不确定它为什么会被抛出..

【问题讨论】:

    标签: python request http-status-code-404 soundcloud


    【解决方案1】:

    来自 Soundcloud Python 文档:

    tracks = client.get('/tracks', limit=10)
    

    将此与您的比较:

    client.get('tracks/' + trackId).user_id
    

    更具体地说,您缺少前导 /。添加这个应该可以。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-10
      • 1970-01-01
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      相关资源
      最近更新 更多