我是python的初学者,我有两个代码在单独运行时工作正常。但是当我把它们放在一个程序中的函数时,它不起作用。
1)在一个我得到一个json回复,其中包含特定网站中100个douments的详细信息
2)在第二个代码中,我从第一个代码中获取了authorID的每个文档的作者的详细信息。
所以我必须从第一个代码中检索authorID并将其传递给第二个代码中的api调用的url端点。然后将main函数中的2个数据帧与通用authorID合并。
url =“https://api-jj.com/ugt0/xyz/v1/people/%authorID”这适用于 它是这样给出url =“https://api-jj.com/ugt0/xyz/v1/people/314684”
import requests
import pandas as pd
import numpy as np
from pandas.io.json import json_normalize
import sys
import json
import csv
global headers
headers = {
'ConnectAuthorization': "Basic z",
'Authorization': "Bearer Q",
'Cache-Control': "no-cache",
'Postman-Token': "1"
}
global payload
payload=''
r=requests.get(url,data=payload,headers=headers,verify=False)
json_data=r.json()
def get_contendetails():
try:
url="https://api/ugt0/xyz/v1/contents?count=100"
r=requests.get(url,data=payload,headers=headers,verify=False)
json_data=r.json()
if json_data =='' or None :
return [], 'Got empty response'
else:
for i in json_data.get('list',[]):
dfDICT = {'Content_id':[i.get('contentID',None)],
'subject':[i.get('subject',None)],
'published':[i.get('published',None)],
'updated':[i.get('updated',None)],
'likeCount':i.get('likeCount',None),
'replyCount':i.get('replyCount',None),
'viewCount':i.get('viewCount',None)
}
if i.get('author',None): # Test if your key exists
dfDICT['Author'] = i.get('author').get('displayName',None)
else:
dfDICT['Author'] = None
if i.get('author',None):
dfDict['authorID']=i.get('author').get('id',None)
else:
dfDICT['authorID']=None
df1=df1.append(pd.DataFrame(dfDICT,index=[0]),ignore_index=True)
return df1
def get_authordetails(authorID):
try:
url="https://api-jj.com/ugt0/xyz/v1/people/%authorID"
r=requests.get(url,data=payload,headers=headers,verify=False)
json_data=r.json()
if json_data =='' or None :
return [], 'Got empty response'
else:
for j in [json_data]:
profile = j['jive']['profile']
headers = [e['jive_label'] for e in profile]
values = [e['value'] for e in profile]
df2 = pd.DataFrame(columns=headers, data=[values]).drop('BUFUGU','Preferred Language'axis[0])
return df2
def main():
s=get_contendetails()
v=get_contendetails(authorID)
f=pd.merge(s,v)
第二部分代码的数据框,其中包含一位作者的详细信息: