私はAngel List(AL)APIをいじくり回していて、サンフランシスコのすべての求人を取得したいと考えています。 APIのアクティブなラッパーPython=ラッパーを見つけることができなかったので(何か進んだ場合は、自分で作成したいと思います)、リクエストライブラリを使用しています。
AL APIの結果にはページ番号が付けられており、結果の最初のページを超えて移動する方法がわかりません。
これが私のコードです:
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
requests.get
に引数を追加しようとしましたが、うまくいきませんでした。私はまた、本当におかしなことを試しました。「ページ」キーの値を変更すると、魔法のようにページ分割されます。
例えば。 r_sanfran['page'] = 2
それは比較的単純なものだと思いますが、それを理解することができないので、どんな助けも素晴らしいでしょう。
いつもありがとう。
Angel List APIドキュメント 役立つ場合。
読んだ last_page
そして、範囲内の各ページに対してgetリクエストを作成します。
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
@alecxeの答えの改善:PythonジェネレーターとリクエストHTTPセッションを使用すると、多数のページまたは非常に大きなページをクエリする場合に、パフォーマンスとリソースの使用率を改善できます。
import requests
session = requests.Session()
def get_jobs():
url = "https://api.angel.co/1/tags/1664/jobs"
first_page = session.get(url).json()
yield first_page
num_pages = first_page['last_page']
for page in range(2, num_pages + 1):
next_page = session.get(url, params={'page': page}).json()
yield next_page
for page in get_jobs():
# TODO: process the page