다중 페이지 json 객체를 반복하는 프로그램을 만들었습니다.여러 페이지가있는 json을 반복하는 방법
def get_orgs(token,url):
part1 = 'curl -i -k -X GET -H "Content-Type:application/json" -H "Authorization:Bearer '
final_url = part1 + token + '" ' + url
pipe = subprocess.Popen(final_url, shell=False,stdout=subprocess.PIPE,stdin=subprocess.PIPE)
data = pipe.communicate()[0]
for line in data.split('\n'):
print line
try:
row = json.loads(line)
print ("next page url ",row['next'])
except :
pass
return row
my_data = get_orgs(u'MyBeearerToken',"https://data.ratings.com/v1.0/org/576/portfolios/36/companies/")
json으로 개체는 다음과 같습니다 : 나는 '다음'키를 반복 사용하고
[{results: [{"liquidity":"Strong","earningsPerformance":"Average"}]
,"next":"https://data.ratings.com/v1.0/org/576/portfolios/36/companies/?page=2"}]
하지만 시간이에 "잘못된 페이지"(존재하지 않는 페이지)을 가리 킵니다 . JSON 객체에는 각 페이지에 몇 개의 레코드가 있는지에 대한 규칙이 있습니까? 이 경우 가능한 한 페이지 수를 예상하는 데 사용합니다.
편집 : 세부 정보 추가 json에는 [결과], [다음]]의 키가 두 개 있습니다. 여러 페이지가있는 경우 '다음'키에 다음 페이지의 URL (as you can see in the output above
)이 있습니다. 그렇지 않으면 '없음'이 포함됩니다. 그러나 문제는 때때로 '없음'대신 다음 페이지 (존재하지 않음)를 가리키는 것입니다. 그래서, Json에서 행을 셀 수 있고 루프가 얼마나 많은 페이지를 반복해야 하는지를 알기 위해 숫자로 나눌 수 있는지 알고 싶습니다. 제 생각에는
나에게 당신이 무엇을 달성하려고하는지 명확하지 않습니다. 귀하의 문제는 당신이 서버에서 일부 JSON 요청하는 것 같습니다. JSON에는 더 나은 단어가 부족하여 다음 데이터 세트에 대한 URL이 포함되어 있습니다. 올바른 URL을 추출하는 데 문제가 있습니까? 아니면 응답에서 추출한 URL이 잘못 되었습니까? 나중에 문제가 귀하의 코드에 없습니다. 왜 [urllib.request] (https://docs.python.org/3.5/library/urllib.request.html)와 같은 내장 된 파이썬 솔루션 대신 컬을 사용하고 있습니까? – Maurice
안녕하세요, Maurice, 답장을 보내 주셔서 감사합니다. 내 회사의 프록시 뒤에 앉아서 곱슬 곱슬하게 잘 작동합니다. urllib2 또는 요청의 경우 인증 오류가 발생합니다. – Tammy
@Maurice, 문제에 대한 자세한 내용을 제공하는 질문을 편집했습니다. – Tammy