2013-07-21 22 views
7

Tôi đang phát xung quanh với API Danh sách Thiên thần (AL) và muốn kéo tất cả các công việc ở San San Francisco. Vì tôi không thể tìm thấy một trình bao bọc Python hoạt động cho api (nếu tôi thực hiện bất kỳ đầu nào, tôi nghĩ mình muốn tự tạo), tôi đang sử dụng thư viện yêu cầu.Python yêu cầu các đối số/xử lý việc phân trang api

Kết quả của API AL được phân trang và tôi không thể tìm ra cách di chuyển ra ngoài trang đầu tiên của kết quả.

Đây là mã của tôi:

import requests 
r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs").json() 
r_sanfran.keys() 
# returns [u'per_page', u'last_page', u'total', u'jobs', u'page'] 
r_sanfran['last_page'] 
#returns 16 
r_sanfran['page'] 
# returns 1 

Tôi đã thử thêm đối số cho requests.get, nhưng điều đó không làm việc. Tôi cũng đã thử một cái gì đó thực sự câm - thay đổi giá trị của 'trang' chính như vậy là kỳ diệu sẽ phân trang cho tôi.

ví dụ: r_sanfran['page'] = 2

Tôi đoán nó là một cái gì đó tương đối đơn giản, nhưng tôi không thể hình dung nó ra để bất kỳ trợ giúp sẽ là tuyệt vời.

Cảm ơn mọi khi.

Angel List API documentation nếu nó hữu ích.

Trả lời

12

đọc last_page và thực hiện một yêu cầu get cho mỗi trang trong phạm vi:

import requests 

r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs").json() 
num_pages = r_sanfran['last_page'] 

for page in range(2, num_pages + 1): 
    r_sanfran = requests.get("https://api.angel.co/1/tags/1664/jobs", params={'page': page}).json() 
    print r_sanfran['page'] 
    # TODO: extract the data 
+2

Tôi đoán rằng nên được 'phạm vi (2, NUM_PAGES + 1)' từ trang đầu tiên là 1, và 16 là tổng số trang, vì vậy sẽ muốn bao gồm trong phạm vi ... (và có thể muốn sử dụng 'requests.get ('http: // ... blah ...?', params = {'page' : page}) 'để tránh nội suy chuỗi –

+0

Ah, tôi không thấy rằng tôi có thể vượt qua một đối số params trong requests.get – crock1255

+0

Ah, được rồi, tôi thấy điều gì đang diễn ra. co/1 ... angel.co/2, v.v. Cảm ơn sự giúp đỡ! – crock1255

Các vấn đề liên quan