【问题标题】:How can I determine number of jobs for a given technology from a list I have obtained in .json format from GitHub job opening API in python?如何从我从 Python 中的 GitHub 职位开放 API 以 .json 格式获得的列表中确定给定技术的职位数量?
【发布时间】:2021-05-13 23:09:55
【问题描述】:

我的任务是编写一个函数来获取给定技术的工作数量。 注意:API 每页最多提供 50 个作业。 如果每页有 50 个职位,则意味着可能会有更多职位列表可用。 因此,如果每页有 50 个作业,您应该为下一页再次调用 API 以检查更多作业。 如果每页获得的作业少于 50 个,则可以将其作为最终计数。

以下是我的代码

baseurl = "https://jobs.github.com/positions.json"
def get_number_of_jobs(technology):
    number_of_jobs = 0
    tech = technology
    page= 0
    PARAMS  = {'technology':tech , 'page': page}
    jobs=requests.get(url=baseurl,params = PARAMS )
    if jobs.ok:             
        listings = jobs.json()
    number_of_jobs=len(listings)
    if number_of_jobs==50:
        page= page+1 
        PARAMS  = {'technology':tech , 'page': page}
        jobs=requests.get(url=baseurl,params = PARAMS )
        if jobs.ok:             
            listings2 = jobs.json()
    number_of_jobs= number_of_jobs + len(listings2)
    return technology,number_of_jobs

现在我不知道如何在这个函数中进行分页?意思是如何检查是否有超过 50 个针对特定技术的职位发布以及是否再次运行代码并获取这些职位?

我将输出打印为

print(get_number_of_jobs('python'))

('python', 100) 

有人可以帮忙吗?

非常感谢!

【问题讨论】:

  • 为什么要写2个get请求?你应该为它写一个函数
  • 能否给我完整的代码。
  • 检查while 循环并相应地增加page。
  • @Suman 我再次编辑了代码,这是我的完整代码
  • @noora 请输入基本网址

标签: python api github pagination


【解决方案1】:

请告诉我是否可行

import requests
baseurl = 'https://jobs.github.com/positions.json'

total_job = 0

def get_number_of_jobs(technology, page):
    global total_job
    PARAMS  = {'technology':technology , 'page': page}
    jobs=requests.get(url=baseurl,params = PARAMS )
    total_job += len(jobs.json()) if jobs.ok else 0
    return len(jobs.json()) if jobs.ok else 0

def get_jobs(technology):
    page = 0
    while get_number_of_jobs(technology, page) >= 50:page+=1
    return total_job       


print(get_jobs('python'))

【讨论】:

  • 我必须在一个函数中完成这两项工作
  • @noora 只使用 while 循环
【解决方案2】:
baseurl = 'https://jobs.github.com/positions.json'    
def get_number_of_jobs(technology):
    number_of_jobs = 0
    page = 0
    while True:
      payload = {"description":technology,"page":page}
      r = requests.get(baseurl,params=payload)
      if r.ok:
        data = r.json()
      number_of_jobs = len(data)
      if number_of_jobs >= 50:
        page += 1
        continue
      else:
        break    
    return technology,number_of_jobs

【讨论】:

  • 请不要只发布代码作为答案,还要解释您的代码的作用以及它如何解决问题的问题。带有解释的答案通常更有帮助,质量更高,更有可能吸引投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 2018-12-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
相关资源
最近更新 更多