在python

时间:2018-03-27 14:15:56

标签: python json rest api dataframe

我是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)

包含内容详细信息的第一部分代码的数据框: enter image description here

第二部分代码的数据框,其中包含一位作者的详细信息:

enter image description here

0 个答案:

没有答案